我试图用算术和逻辑运算来计算一个表达式。我真的被输出搞糊涂了。你知道吗
例如:
eval('100 >= 1000 & 100 >= 95')
True ==> Wrong
eval('400 >= 0 & 400 >= 0')
True ==> Right
我在运算符&;之后给出条件的输出。是不是我们不能在eval中使用逻辑运算
eval('400 >= 5000 | 400 >= 0')
False ==> Wrong
使用OR运算符,它会给我不同的输出。你知道吗
当我尝试在表达式中使用浮点值时,它抛出TypeError
eval('400.0 >= 0 & 400.0 >= 0')
Traceback (most recent call last):
File "<pyshell#70>", line 1, in <module>
eval('400.0 >= 0 & 400.0 >= 0')
File "<string>", line 1, in <module>
TypeError: unsupported operand type(s) for &: 'int' and 'float'
不用逻辑运算
eval('400.0 >= 0')
True ==> Right
我很困惑。你知道吗
位逻辑运算符的优先级高于等式。这里没有特定于
eval
的内容。你知道吗您应该使用
or
以获得正确的优先级:正如@bruno desthuilliers所提到的,} module 。你知道吗
eval
不是您应该在用户输入中使用的东西。您可能应该在用户输入和Python操作之间构建自己的映射。如果您真的想构建Python表达式,您可能想看看the ^{Python逻辑运算符被命名为
and
,or
-&
和|
是位运算符。所以你想:也就是说,
eval()
是非常不安全的,所以不要将用户输入传递给它。。。你知道吗相关问题 更多 >
编程相关推荐