python if elif diffucltys

问题描述 投票:-1回答:2

我在python中使用了一个非常简单和基本的if elif,但它只会给我相同的结果,而不是我的输入。

answer = input('Do you like christmas? ')

if answer == 'no' or 'No':
    print('Your so uncool, just leave, this is a place for festive people you 
    heartless monster')


elif answer == 'yes' or 'Yes':
    print('Your pretty cool, you can stay, just dont get drunk on the eggnog and 
    make out with the dog...')


elif 'brit' or 'Brit' in answer:
    print('I was gunna be mean to brit, but its christmas and I am not allowed 
    because a fat man in a red suit will reck me')


else:
    print('MAKE UP YOUR MIND, YOU SUCK')

输出是占位符,但是在我运行时我得到的是无答案的打印,天气我没有回答是或其他任何事情......

编辑:我现在看到在问题中我的缩进看起来非常糟糕,这不是我写的方式,但这只是在这里发布,请假设缩进是正确的。

python if-statement
2个回答
0
投票

你得到这个是因为你的第一个if语句实际上是这样解析的:

if (answer == 'no') or ('No'):

这意味着如果answer == 'no''No'被认为是“真实的”,那么该声明将继续进行。 python中的任何非空字符串都被认为是true,因此您将在第一个语句中始终获得True

bool('')
# will output False
bool('No')
# will output True

如果你真的想要执行这个,你必须每次运行比较...

if answer == 'no' or answer == 'No':

但是,有一些更简洁的方法,例如

answer.lower() == 'no'
# or, if you want lots more examples
answer in ['no', 'No', 'NOPE', 'Not at all', 'Never']

建议阅读


0
投票

你的问题是if的陈述:

answer = 'yes'
if answer == 'no' or 'No':
               1. ^ (this is saying, 'yes' == 'no' or 'No')
               2. ^ (this is saying, False or 'No')
               3. ^ (this is saying, False or True)
               4. ^ (this is saying True)

在python strings are truthy中,意味着它们在布尔语句中被解释为true。

所以你的正确陈述(和其他人):

answer = 'yes'
if answer == 'no' or answer == 'No':
               1. ^ (this is saying, 'yes' == 'no' or 'yest == ''No')
               2. ^ (this is saying, False or False)
               3. ^ (this is saying False)

就是这样了!哦,另一个提示,你可以比较任何类型的不/是这样的

answer = str.lower(input('Do you like christmas? '))
if answer == 'no':
   ^ Even if the user types 'No', it will be turned into 'no'.
© www.soinside.com 2019 - 2024. All rights reserved.