首页 > 解决方案 > Python If 语句问题

问题描述

我正在尝试测试一个输入(一个字符串)是否等同于 3 个不同的字符串(只需要等同于其中一个)。但无论我输入什么输入,它总是等效的,除非我删除 or 语句。谁可以给我解释一下这个???

Input_String = 'Random String'

Option_1 = 'rock'

Option_2 = 'paper'

Option_3 = 'scissors'

if Input_String == Option_1 or Option_2 or Option_3:

   print(1)

else:

    print(2)

# It will always print 1 like this.

标签: pythonpython-3.x

解决方案


关键字or and连接布尔值(True、False)。在你的情况下

If a == b or c or d:

解释器将 (a == b) 理解为布尔值天气 a 等于 b,c 为布尔值 True(因为非空字符串转换为布尔类型为 True)n 和 d 相同。所以你会得到

If (a == b) or True or True:

因此,如果至少有一个 True,则整个语句将具有 True 值,并且将解释 If 语句的主体。

正确的方法是。

if Input_String == Option_1 or Input_String == Option_2 or Input_String == Option_3: 
     print(1)

推荐阅读