Python raw_input虽然没有正常工作

时间:2014-10-16 10:32:19

标签: python input while-loop

我正在尝试使用raw_input()从用户那里获取字符输入,看看是否为Y或N.应该执行此任务的代码如下:

#
# Things I have done before
#
c = ""
while c.capitalize() != "Y" or c.capitalize() != "N":
    c = raw_input("\n\n If you wish to continue, press Y (or N to terminate) ")

if c.capitalize() == "N":
    system.exit("Stopped script......check your files if necessary\n\n");
else:
    #Other things to do

目前,即使我按Y或N,我也会反复收到提示。不知道它有什么问题。我尝试使用input()而不是raw_input(),但我认为我使用的是旧版本的python(2x),这就是为什么需要使用raw_input。

感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

你的逻辑存在错误:

while c.capitalize() != "Y" or c.capitalize() != "N":

如果我输入" Y",则第一个词是False,但第二个词是TrueFalse or TrueTrue,并执行while块。如果我输入" N"同样的事情。您必须使用and

while c.capitalize() != "Y" and c.capitalize() != "N":

答案 1 :(得分:1)

你的情况错了:
如果c=='N',那么第一部分(c!=Y)为真,那么您将循环(相反,如果c=='Y',则c不等于' N& #39)

更改为

while (c.capitalize() != "Y" and c.capitalize() != "N"):

或更好:

while (c.capitalize() not in ['Y','N']):