简单Python函数
我做了一个简单的python函数,它接受两个输入并输出一些文本 在这里简单Python函数,python,Python,我做了一个简单的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:
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"
如果下雨是假的,就给毛衣或帽子。但我的代码给出了true,即使israining_str==0或israining_str==1
我哪里做错了?这是你的问题:
>>> bool("0")
True
任何非空字符串在转换为布尔值时均为True。您可以使用boolintisraining\u str将其转换为int,然后再转换为bool,如果用户输入字符串0,则会得到数字0。这是您的问题:
>>> bool("0")
True
任何非空字符串在转换为布尔值时均为True。您可以使用boolintisraining\u str将其转换为int,然后再转换为bool,如果用户输入字符串0,则会得到数字0。您使用的是python 3.x吗?如果是,输入将返回一个字符串。如果字符串非空,boolyoustring将返回True。您使用的是python 3.x吗?如果是,输入将返回一个字符串。如果字符串非空,boolyoustring将返回True。根据python文档: 博克斯 使用标准真值测试过程将值转换为布尔值。如果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
根据python的文档: 博克斯 使用标准真值测试过程将值转换为布尔值。如果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
注释,通过比较True或False直接测试bool值不是一种很好的样式,因为您可以编写if israining:。与if boolisraining==True:-具有相同的含义,但更简短、更清晰。同样,如果没有israining,您应该编写:在第三个branchComment中,通过比较True或False直接测试bool值不是一种很好的样式,因为您可以编写if israining:。与if boolisraining==True:-具有相同的含义,但更简短、更清晰。同样地,如果没有israining,你也应该在第三个分支中写下