【问题标题】:I am not able to get False boolean value from user input我无法从用户输入中获取 False 布尔值
【发布时间】:2020-10-01 08:01:24
【问题描述】:
s  = True
while s == True:
   #taking input from the user
   num1 = int(input("enter a number: "))
   sign = input("enter a sign from :+ , - , * , /")
   num2 = int(input("enter a second number: "))
   #calculation
   if sign == "+" :
      print(f'the sum of {num1} and {num2} is {num1+num2}')
   elif sign == "-" :
      print(f'the difference of {num1} and {num2} is {num1-num2}')
   elif sign == "*" :
      print(f'the multiplication of {num1} and {num2} is {num1*num2}')
   elif sign == "/" :
      print(f'the difference of {num1} and {num2} is {num1/num2}')
   else:
      print('invalid sign')
   s = bool(input("type True to start the calculater and False to stop the calculater: "))

无论用户输入是什么,它都会被转换为 True 如何将输入转换为 False 以便退出循环

【问题讨论】:

  • 当使用字符串参数调用bool 时,只有一个空字符串会给你False。请参阅文档中的Truth Value Testing
  • 您将booleval 混淆了。 bool 只是确定其参数是否具有真值;它不会解析字符串以查看它是否是特定的 Python 布尔文字。
  • 但不要使用eval:只需将您的输入与字符串"True"进行比较。

标签: python while-loop boolean user-input


【解决方案1】:

不要打扰布尔文字。只需进行明确的字符串比较。此外,使用无限循环/显式中断模式而不是布尔标志。

while True:
    ...
    s = input("type True...")
    if s != "True":
        break

您可以将s != "True" 替换为任何更复杂的忽略大小写区别的检查;允许“真”或“假”的同义词,如“是”/“否”、“T”/“F”等;或其他检查。


问题的根源在于 bool 没有解析 str 值来寻找 bool 文字。空字符串为False;所有其他字符串都是True:

>>> bool("")
False
>>> bool("True")
True
>>> bool("False")
True
>>> bool("not True")
True

【讨论】:

    猜你喜欢
    • 2022-07-06
    • 2019-12-30
    • 2021-10-20
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-26
    相关资源
    最近更新 更多