简单的Python函数

时间:2012-10-15 18:26:30

标签: 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:
        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
>>> 

如果下雨是假的,那么裹尸布会给SweaterCap。但我的代码甚至可以israining_str == 0israining_str == 1

我在哪里做错了?

3 个答案:

答案 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