是否有任何选项可以在使用if或oprator的if语句中将变量与数字和字符串进行比较?

时间:2019-07-11 08:02:07

标签: python

是否可以使用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)

4 个答案:

答案 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")