input will return a string which when you then iterate over will return you each character of the string one by one. so if you done for i in '10'
i would first be set as 1, then set as 0. Instead there is no need to iterate over the string, just convert it to an int. I have updated your code and also cleaned it up a little bit.
the key here is instead of iterating over input converting each char to an int, it instead takes all of input as a string and converts it to an int.
frames = []
while len(frames) != 10:
if len(frames) == 9:
print("You're on the last frame")
pin1 = int(input(f"You are on frame {len(frames)+1}/10 \nHow many pins did you knock over on your first roll?:"))
pin2 = int(input("How many pins did you knock over on your second roll?:"))
frames.append({
"First roll": pin1,
"Second roll": pin2
})
print(frames)
print(f"Your rolls for this frame are, {pin1 + pin2}")
TAIL OF OUTPUT
You are on frame 9/10
How many pins did you knock over on your first roll?:4
How many pins did you knock over on your second roll?:4
[{'First roll': 5, 'Second roll': 4}, {'First roll': 4, 'Second roll': 4}, {'First roll': 4, 'Second roll': 4}, {'First roll': 4, 'Second roll': 4}, {'First roll': 4, 'Second roll': 4}, {'First roll': 4, 'Second roll': 4}, {'First roll': 4, 'Second roll': 4}, {'First roll': 4, 'Second roll': 4}, {'First roll': 4, 'Second roll': 4}]
Your rolls for this frame are, 8
You're on the last frame
You are on frame 10/10
How many pins did you knock over on your first roll?:5
How many pins did you knock over on your second roll?:5
[{'First roll': 5, 'Second roll': 4}, {'First roll': 4, 'Second roll': 4}, {'First roll': 4, 'Second roll': 4}, {'First roll': 4, 'Second roll': 4}, {'First roll': 4, 'Second roll': 4}, {'First roll': 4, 'Second roll': 4}, {'First roll': 4, 'Second roll': 4}, {'First roll': 4, 'Second roll': 4}, {'First roll': 4, 'Second roll': 4}, {'First roll': 5, 'Second roll': 5}]
Your rolls for this frame are, 10