我正在尝试使用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。
感谢任何帮助。
答案 0 :(得分:4)
你的逻辑存在错误:
while c.capitalize() != "Y" or c.capitalize() != "N":
如果我输入" Y",则第一个词是False
,但第二个词是True
。 False or True
为True
,并执行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']):