Python TypeError:|: 'str' 和 'str' 错误不支持的操作数类型

Python TypeError: unsupported operand type(s) for |: 'str' and 'str' error

提问人:Kafası Güzel Penguen 提问时间:9/23/2023 更新时间:9/24/2023 访问量:47

问:

您好,当我尝试制作一个基本的输入面板时,我遇到了该错误。

TypeError:|: 'str' 和 'str' 不支持的操作数类型

ip = str(input(">>> "))
if ip == "0" | ip == "00":
    pass
elif ip == "1" | ip == "01":
    send()
elif ip == "2" | ip == "02":
    st()
elif ip == "3" | ip == "03":
    fst()
elif ip == "4" | ip == "04":
    res

只是呜???

python 字符串 输入

评论

4赞 John Gordon 9/23/2023
我想你想使用运算符,而不是.or|
0赞 Marcelo Paco 9/23/2023
你可以看看这个网站,了解 python 的基本逻辑运算符。
1赞 user19077881 9/23/2023
注意 - input() 返回一个字符串 - 无需转换。

答:

3赞 Angry_Llama 9/23/2023 #1

您使用的是按位或运算符,而不是逻辑运算符。在本例中,您是按位比较语句,而不是逻辑比较语句。因此,除非您故意使用按位逻辑,否则不建议在 if 中比较逻辑。|or

3赞 tdelaney 9/23/2023 #2

|是按位 or 运算符。从 Operator 优先级来看,绑定比 更紧,所以|==

ip == "0" | ip == "00"

可以表示为

ip == ("0" | ip) == "00"

str不支持按位或,所以失败。你想要合乎逻辑的.由于优先级低于 ,因此有效"0" | iporor==

ip == "0" or ip == "00"