我的随机数猜测器代码如下:
if answer == 'n' and 'N':
print 'I hope to see you next time, %s' % user
exit()
但是,如果我输入'N'
,则控制台将清空并退出,而不是打印语句。 'n'
仍然可以正常运行,而'Y' and 'y'
语句可以完美运行。因此,我不确定'N'
在这里发生了什么,但是我可能忽略了一些简单的事情。谢谢
答案 0 :(得分:0)
使您失望的是您的奇怪语法。
解释器将其解释为
if (answer=='n') and 'N':
请注意,无论内容如何,非空字符串都将被评估为True
,因此等效于
if (answer=='n')
要解决此问题,请将此行替换为
if answer=='n' and answer=='N':
请注意,此行绝不能评估为真。
如果您希望它能正常工作,请尝试
if answer=='n' or answer=='N':
答案 1 :(得分:0)
您的陈述是错误的。
首先,当您检查互斥输入(在这种情况下为n
或N
)时,必须使用or
而不是and
。如果同时满足两个条件,则使用and
。
第二,您必须使用if answer == 'n' or answer == 'N'
,因为您的语句仅表示if answer is 'n' and True
,因为非空字符串的值为True。
答案 2 :(得分:0)
您在这里有两个错误。
首先,if answer == 'n' and 'N'
不是检查两个值的正确方法。
用英语,我们可以说“如果房子是大房子还是红色房子”,并且我们理解“大房子”和“红色房子”都是指房子。但是Python不是这样的。您必须明确说明每个条件,例如:
if answer == 'n' and answer == 'N':
但是,即使执行此操作,您仍然会遇到逻辑错误:如何同时使答案等于n
和N
?不可以使用or
代替and
。
答案 3 :(得分:0)
一种更简洁明了的方式是:
if answer in {'n', 'N'}:
您将and
与or
混淆了。您希望在满足两个条件之一时打印print
。因此,您应该这样做:
if answer == 'n' or answer == 'N':
或者,使用建议的第一种方法。