如果并且不接受第二个输入

时间:2018-08-19 01:49:12

标签: python pycharm

我的随机数猜测器代码如下:

if answer == 'n' and 'N':
    print 'I hope to see you next time, %s' % user
    exit()

但是,如果我输入'N',则控制台将清空并退出,而不是打印语句。 'n'仍然可以正常运行,而'Y' and 'y'语句可以完美运行。因此,我不确定'N'在这里发生了什么,但是我可能忽略了一些简单的事情。谢谢

4 个答案:

答案 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)

您的陈述是错误的。

首先,当您检查互斥输入(在这种情况下为nN)时,必须使用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':

但是,即使执行此操作,您仍然会遇到逻辑错误:如何同时使答案等于nN?不可以使用or代替and

答案 3 :(得分:0)

一种更简洁明了的方式是:

if answer in {'n', 'N'}:

您将andor混淆了。您希望在满足两个条件之一时打印print。因此,您应该这样做:

if answer == 'n' or answer == 'N':

或者,使用建议的第一种方法。