gpt4 book ai didi

python - Python 中的 bool 表达式还是字符串?总是返回 'True'

转载 作者:太空狗 更新时间:2023-10-30 02:32:38 26 4
gpt4 key购买 nike

我正在尝试根据(不可预测的)用户输入构建一个 bool 表达式。我发现我正在构建一个看起来正确但不起作用的字符串。我查看了 python.org、Google 和 Stackoverflow,但找不到这里出了什么问题。

代码示例:

    print stringDing
newVariable = stringDing.replace('False','0')
print newVariable
print bool(newVariable)

由此产生的输出:

    False or False or False
0 or 0 or 0
True

然而,当字符串被粘贴到 python 中时,python 会按预期响应:

    >>> False or False or False
False

我想我需要将其构建为一个字符串,因为用户可以添加“OR”、“AND”和括号,我需要将它们放在适当的位置。

如何进行?

最佳答案

将非空字符串解释为 bool 将始终评估为 True。即:

print bool("False") # True
print bool("0") # True

这是因为 str 是一个可迭代对象(例如 listsetdict)。所有可迭代对象都被认为是 True,如果它们是非空的。 str 是一个可迭代对象,它遍历其字符。这很有用,例如如果你想测试字符串 s 是否为空。在这种情况下,你可以这样写:

if s:
# do something with non-empty string s.

但是,如果您想评估字符串表示的表达式,则调用eval:

print eval("False") # False
print eval("0") # 0
print bool(eval("0")) # False

关于python - Python 中的 bool 表达式还是字符串?总是返回 'True',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17133937/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com