Python 3. - 为什么我的逻辑运算符('和','或')不起作用?

时间:2016-03-16 21:54:10

标签: python python-3.x

我刚刚开始学习Python而且逻辑and似乎不起作用,例如只有myName需要'Chris'而且myVar可能是5并且它仍然会打印'克里斯很棒'。

我也试过使用似乎没有任何逻辑的or 另外,我甚至在if语句中尝试了myVar != 0,这没有任何区别!

为了确认,我肯定知道andor如何影响if条件。

print("Hello world")
myName = input("What is your name? ") 
print("Your name is",myName)
myVar = input("Enter a number: ")
if(myName == 'Chris' and myVar == 0):
    print("Chris is great")
elif(myName=='Bob'):
    print("Bob is ok!")
else:
    print("who are you?")

感谢任何能提供帮助的人 - 我的猜测是它与我如何配置python有关...?我肯定在运行.py文件。

2 个答案:

答案 0 :(得分:2)

在Python 3中,input会返回str,但在Python 2中,input可以返回int

所以,你的if语句工作正常。

>>> myVar = input("Enter a number: ")
Enter a number: 0
>>> type(myVar)
str

因此myVar == 0永远不会成立,但myVar == '0'是。{1}}。

因此,引用0或将input投射到int

myVar = int(input("Enter a number: "))

但是,请注意,如果你没有输入数字,这会引发错误,这就是为什么你应该引用0,在我看来(除非你实际上需要某个数字)

答案 1 :(得分:2)

您遇到的问题是input会根据输入创建一个字符串。您需要将myVar转换为int()的整数。

print("Hello world")
myName = input("What is your name? ") 
print("Your name is",myName)
myVar = int(input("Enter a number: ")) # myVar is an int now
if (myName == 'Chris' and myVar == 0):
    print("Chris is great")
elif(myName=='Bob'):
    print("Bob is ok!")
else:
    print("who are you?")