>是否有任何选项可以使用运算符将变量与同一 if 语句中的数字和字符串进行比较or
?
我已经尝试过了,但它没有返回真正的值:
print("enter you choice either 1 for yesn 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)
input
返回一个字符串,因此您需要与字符串进行比较。
此外,您可以使用in
(__contains__
(来检查实现__contains__
的给定集合中的值(可以是任何原始集合,例如 tuple
, list
, set
,但是使用 set
会因为 O(1( 查找而高效,但创建集合的成本对于所有集合都是相同的(:
if x in {'1', 'yes'}:
显然,您可以使用 or
-chain 来执行此操作,但这不会像使用集合那样可读和维护。
你可以试试这个:
print("enter you choice either 1 for yesn 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
input()
函数返回一个字符串。因此,在您的情况下,尽管用户会输入 1 或 2,但 x 仍然是字符串"1"或"2"。所以你能做的是
if x in ['1', 'yes']:
# do something
elif x in ['2', 'no']:
# do something else
更新了您的代码,这就是结果,问题是您正在比较 str 和 int,要修复它,您只需要这样做。
if (x == "1") or (x == "yes")
#code
elif (x == "2") or (x == "no")