Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单Python函数_Python - Fatal编程技术网

简单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:

我做了一个简单的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"
如果下雨是假的,就给毛衣或帽子。但我的代码给出了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,你也应该在第三个分支中写下