我做了简单的python函数,它接受两个输入并输出一些文本。
在这里,
def weather():
israining_str=input("Is it raining (1 or 0) ? ")
israining = bool(israining_str)
temp_str=input("What is the temp ? ")
temp = float(temp_str)
if israining==True and temp<18:
return "Umbrella & Sweater"
elif israining==True and temp>=18:
return "Umbrella"
elif israining==False and temp<18:
return "Sweater"
else:
return "Cap"
测试数据 -
>>>
Is it raining ? 0
What is the temp ? 43
Umbrella
>>> ================================ RESTART ================================
>>>
Is it raining ? 1
What is the temp ? 43
Umbrella
>>>
如果下雨是假的,那么裹尸布会给Sweater
或Cap
。但我的代码甚至可以israining_str == 0
或israining_str == 1
我在哪里做错了?
答案 0 :(得分:7)
这是你的问题:
>>> bool("0")
True
转换为布尔值时,任何非空字符串都为True。您可以bool(int(israining_str))
转换为int
,然后转换为bool
,如果此人输入字符串"0"
,则会为您提供零号。
答案 1 :(得分:2)
您使用的是python 3.x吗?如果是这样,input
将返回一个字符串。如果字符串非空,bool(youstring)
将返回True。
答案 2 :(得分:1)
根据python的文档:
BOOL(x)的
使用标准真值测试程序将值转换为布尔值。如果x为false或省略,则返回False。
您将非空字符串传递给此函数,非空字符串为True。
你可以这样写:
t = int(israining_str)
# here you can check if user's input is 0 or 1 and ask user again if it is not
israining = False
if t:
israining = True