是否可以使用or
运算符在同一if语句中将变量与数字和字符串进行比较?
我已经尝试过了,但是没有返回真实值:
print("enter you choice either 1 for yes\n 2 for no")
x=input("enter your choice")
if(x==1 or x=='yes'):
x=5
elif(x==2 or x=='no'):
x=6
print(x)
答案 0 :(得分:4)
input
返回一个字符串,因此您需要与这些字符串进行比较。
此外,您可以使用in
(__contains__
)在实现__contains__
的给定集合中检查值(可以是任何原始集合,例如tuple
,{ {1}},list
,但是由于使用 O(1)查找,因此使用set
会很有效,但是创建集合的成本对于所有对象都是相同的):
set
您显然可以使用if x in {'1', 'yes'}:
链来做到这一点,但是它不像使用集合那样可读性和可维护性。
答案 1 :(得分:1)
您可以尝试以下方法:
print("enter you choice either 1 for yes\n 2 for no")
x=input("enter your choice")
if(x in {1, '1', 'yes'}):
x=5
elif(x in {2, '2', 'yes'}):
x=6
print(x)
Python input
始终在python3中返回一个字符串。如果您使用的是python2,则可能返回整数。如果您只是检查1
或'1'
(因为对用户而言,它们表示相同),则可以在两个版本的python上使用
答案 2 :(得分:1)
input()
函数返回一个字符串。因此,在您的情况下,尽管用户将输入1或2,但x仍然是字符串“ 1”或“ 2”。因此,您可以做的是
if x in ['1', 'yes']:
# do something
elif x in ['2', 'no']:
# do something else
答案 3 :(得分:0)
我已经更新了您的代码,这就是结果,问题是您正在比较str和int,要对其进行修复,只需执行此操作即可。
if (x == "1") or (x == "yes")
#code
elif (x == "2") or (x == "no")