【问题标题】:bool(input("Enter:") always returns Truebool(input("Enter:") 总是返回 True
【发布时间】:2020-05-03 18:29:37
【问题描述】:

您也可以将字符串转换为布尔值,只要字符串包含 对或错(仅此而已)。例如:

status = bool(input('OK to proceed: '))
print(status)
print(type(status))

当我们运行这个输出时:

OK to proceed: False
True
<class 'bool'>

即使我们输入 0 或 False,它仍然返回 True。这是为什么呢?

【问题讨论】:

  • 改用status = input('OK to proceed: ').lower() == "ok"

标签: python-3.x boolean


【解决方案1】:

与其他 Python 序列一样,如果字符串非空,则字符串为真(所以 bool(the_string)True)。只有空字符串转换为False

truthy = bool("any content")
falsey = bool("")

如果您阅读的教程建议在 input() 的提示符下键入 False 会得到布尔值 False,那么它可能是为 Python 2 编写的,而 input 的作用相当于eval(input()) 在 Python 3 中。这不是您通常想要的,因为它允许用户输入文本以运行任何可以放入表达式的 Python 代码(包括具有副作用的表达式,例如删除硬盘上的所有文件) .

【讨论】:

  • 有道理,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-06
  • 2017-05-10
  • 2013-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多