我试图寻找类似的问题,但已经做空了。我试图让一个while循环停止输入'done'。无论我做什么或如何格式化它,它要么不会停止循环,要么打印我分配给'完成'的值。如果我在没有赋值的情况下运行它会抛出'NameError:name'done'未定义'。如果我为它分配一个值,它将不会结束循环。我不是要求代码优化或帮助其他任何东西,但如果有人能解释为什么会发生这种情况,我会非常感激。
Counter1 = 0
Counter2 = 0
Counter3 = 0
Counter4 = 0
n = 0
while True: #Begins a loop that runs until manually ended.
n = input("Enter desired scores, and type done when complete: ")
if n == "done": #Closes the loop if given this input.
break
else:
n = int(n) #changes input to an integer
if n >= 0 and n <= 25: #increments the counters depending on the input
Counter1 = Counter1 + 1
elif n > 25 and n <= 50:
Counter2 = Counter2 + 1
elif n > 50 and n <= 75:
Counter3 = Counter3 + 1
else:
Counter4 = Counter4 + 1
答案 0 :(得分:0)
您正在使用Python 2. input
会立即尝试将您的输入转换为Python类型,这是危险并导致您遇到的问题。请改用raw_input
。
换句话说,当你输入“完成”时,input
会尝试eval *它,会出现一个名为“done”的不存在的变量,然后挽救抱怨。如果您使用raw_input
代替,它会为您提供一个字符串,您可以根据需要将其正确地转换为其他类型,或者在您的情况下,因为字符串是您想要的,所以不要管它。
*这是关于JavaScript的,但eval出现在许多编程语言中。