我无法从用户输入中获取 False 布尔值


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 以便我可以脱离循环

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

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

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


问题的根源是bool不会解析str值以查找bool文本。空字符串False;所有其他字符串都True

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

最新更新