rounds = input()
for i in range(int(rounds)):
score = input(int())[0:3]
a = score[0]
d = score[2]
antonia = 100
david = 100
for scores in score:
if a < d:
antonia -= int(a)
if a > d:
david -= int(d)
elif a == d:
pass
print(antonia)
print(david)
输入期望: 第一行输入包含整数n(1≤n≤15),即整数 将被播放。在接下来的n行中,将是两个整数:该轮的Antonia卷, 然后是一个空格,接着是大卫的那一轮。每个卷都是一个整数 介于1和6之间(含)。
输出期望:输出将包含两行。在第一行,输出Antonia具有的点数 经过所有轮次之后。在第二行,输出David拥有的点数 经过所有轮次之后。
输入:
4
5 6
输出:
为什么底部值(david)应该正确更改,但顶部不是?我对antonia的做法有何不同,因为它不能输出与大卫相同的功能?
答案 0 :(得分:1)
在第一个循环中,您会不断更新a
和d
。因此,在循环结束时,a
和d
只具有与最后一组输入相对应的值。
此外,在第二个循环中,您不会迭代所有分数,而是最后一组输入。在继续之前,我建议你回过头来了解你的代码究竟在做什么,并追踪价值观的变化。
无论如何,解决问题的一种方法是:
rounds = input("Number of rounds: ")
scores = []
for i in range(int(rounds)):
score = input("Scores separated by a space: ").split()
scores.append((int(score[0]), int(score[1]))) #Append pairs of scores to a list
antonia = 100
david = 100
for score in scores:
a,d = score # Split the pair into a and d
if a < d:
antonia -= int(a)
if a > d:
david -= int(d)
elif a == d:
pass
print(antonia)
print(david)