Python骰子游戏点变量不变

时间:2016-02-14 22:22:38

标签: python function dice

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拥有的点数 经过所有轮次之后。

输入:

  1. 4

  2. 5 6

  3. 6 6
  4. 4 3
  5. 5 2
  6. 输出:

    • 100&lt; - (WHY ???)
    • 94

    为什么底部值(david)应该正确更改,但顶部不是?我对antonia的做法有何不同,因为它不能输出与大卫相同的功能?

1 个答案:

答案 0 :(得分:1)

在第一个循环中,您会不断更新ad。因此,在循环结束时,ad只具有与最后一组输入相对应的值。

此外,在第二个循环中,您不会迭代所有分数,而是最后一组输入。在继续之前,我建议你回过头来了解你的代码究竟在做什么,并追踪价值观的变化。

无论如何,解决问题的一种方法是:

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)