Python不打印出elif和else条件,只打印if语句的条件

时间:2017-02-12 11:16:01

标签: python if-statement

我正在制作一个简短的节目,只是为了好玩,当输入我的名字时,它会说“你喜欢程序员”。这有效但但其他条件与elif和其他条件不起作用,相反,他们只打印出if条件。 `a =输入('你叫什么名字')

a =input('What is your name')
if a == 'Hasan' or 'hasan':
    print('Hi programmer!')
elif a == 'Bob' or 'bob':
    print('Big fat boi')
else:
    print(a + ", i'm sorry to say this, but you suck!!!")

我正在浏览StackOverflow,但找不到我想要的答案。我也查看了其他网站,但他们似乎从来没有真正帮助过。我的if语句的输出应打印出'hi programmer!'它确实如此。然而,当我检查我的elif和其他条件时,它仍然输出'hi programmer'当elif条件的输出应该是'Big fat boi'并且else语句的输出应该是“(a),i”很抱歉这样说但是你很糟糕!!!“ 如果我没有说明任何内容,我很抱歉,这是我的第一个问题。

3 个答案:

答案 0 :(得分:1)

此示例的正确语法是:

a =input('What is your name')
if a == 'Hasan' or a == 'hasan':
    print('Hi programmer!')
elif a == 'Bob' or a == 'bob':
    print('Big fat boi')
else:
    print(a + ", i'm sorry to say this, but you suck!!!")

你最初写它的方式是错误的。声明:

a == 'Hasan' or 'hasan'
a等于' Hasan'时,

返回True并返回' hasan'在所有其他情况下。基本上,总是使用第一个if分支,因为' hasan'由Python解释器评估为True。

Internet和StackOverflow上有一些资源可以理解在这种情况下会发生什么。例如,阅读此问题的答案:Python boolean expression and or

答案 1 :(得分:1)

当你这样做时

if a == 'Hasan' or 'hasan':

检查:

if a == 'Hasan'

if 'hasan'

由于'hasan'不是空字符串,因此它始终返回True。 (有关具有布尔值的更多对象,请参阅Python文档上的Truth value testing。)

这导致代码始终在您的第一个True语句中返回if

为了让您的代码按预期工作,您需要检查

if a == 'Hasan' or a =='hasan':

您还可以检查输入的小写字母,如此

if a.lower() == 'hasan':

答案 2 :(得分:0)

您需要更改[(0, 1), (1, 2), (2, 5), (5, len(str)]声明:

if/elif/else

这是因为if a == 'Hasan' or a == 'hasan': print('Hi programmer!') elif a == 'Bob' or a == 'bob': print('Big fat boi') else: print(a + ", i'm sorry to say this, but you suck!!!") 总是评估为真。