【发布时间】:2018-10-10 16:24:44
【问题描述】:
我正在尝试检查每个整数(数组)是否有效(0 到 30 之间)。当告诉用户分数无效的行运行但变量似乎不是 False 时出现问题,我不知道为什么,有人可以解决这个问题吗?
这里是有问题的代码:
while valid_score == True and program_running == True:
for counter in range(0,6):
print("How mant points did player", counter + 1 ,"earn?")
score_earned[counter] = int(input())
if score_earned[counter] < 0 or score_earned[counter] > 30:
print("That value was invalid as it was lower than 0 or `above 30!")`
valid_score = False
else:
valid_score = True
total_score = score_earned[counter] + total_score
valid_score = False
【问题讨论】:
-
有什么问题?什么是回溯?
-
不相关,但
range(0, 6)的第一个参数是不必要的。 -
while 循环在发现无效分数时没有退出的原因是因为在 while 循环检查它是否有效之前,您的 for 循环仍然会从 0 到 6 运行到完成。当您发现无效分数时,您可能希望跳出 for 循环。我也看不到 while 循环的意义,因为您总是在最后将 valid_score 设置为 False,因此 while 循环只运行一次。
-
至少从您所展示的内容来看,您并没有在迭代之前创建数组/列表。在 while 循环之前设置 score_earned = [0 for x in range(6)]。还有问题吗?编辑 - 正如其他人提到的那样, for range(0, 6) 几乎否定了 while 循环的有用性。在 while 循环之前开始计数,它将代替计数器变量。
-
您的问题相当混乱。 “变量似乎不是 False” 这里的“变量”是指
valid_score吗?在 while 循环结束时将其设置为 false。那么你的意思是它不是False在for循环之后吗?为什么你有一个while循环,条件是valid_score是True,当你在循环结束时将它设置为False,保证它在第一次迭代后退出?
标签: python arrays loops while-loop