使用特定的inpu结束while循环

2024-09-27 07:27:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我曾试图寻找类似的问题,但没有找到答案。我试图让while循环在输入“done”时停止。无论我做什么或如何格式化它,它要么不会停止循环,要么打印我分配给“done”的值。如果我在没有赋值的情况下运行它,它会抛出一个“NameError:name‘done’is not defined’”。如果我给它赋值,它不会结束循环。我不是在请求代码优化或任何其他方面的帮助,但如果有人能解释为什么会发生这种情况,我将非常感激。在

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

Tags: andtheloopinputif情况else赋值
1条回答
网友
1楼 · 发布于 2024-09-27 07:27:09

您使用的是python2。input立即尝试将您的输入转换为Python类型,这是危险的,并且会导致与您所遇到的类似的问题。请改用raw_input。在

换句话说,当你输入“done”时,input试图eval*它,得到一个不存在的名为“done”的变量,并排除抱怨。如果您使用raw_input,它将给您一个字符串,您可以根据需要将其正确转换为其他类型,或者在您的情况下,不要使用它,因为字符串是您想要的。在

*这是关于JavaScript的,但是eval出现在许多编程语言中。在

相关问题 更多 >

    热门问题