简单的python程序帮助!

时间:2011-02-28 19:16:35

标签: python

该程序应该在给定的一天计算低于60的度数,然后创建一个运行的度数和。 count等于60以下的度数之和。但是,当我运行它时,我收到此错误:

cool = 60 - temp

TypeError:不支持的操作数类型 - :'int'和'str'

关于它为什么这样做的任何想法?谢谢!

def cold_days():

    temp = eval(input("What is the temperature? "))
    count = 0

    if temp < 60:
        while temp !="quit":

            temp = eval(input("What is the temperature? "))
            cool = 60 - temp
            count = count + heat
        print(count)
    else:
        print("you have no cold days")

4 个答案:

答案 0 :(得分:3)

您需要将temp转换为int:

...

try:
    temp = int(temp)
except TypeError:
    # Handle invalid integer
    print("%s is not a valid integer." % temp)
    sys.exit(1)

...

答案 1 :(得分:3)

在Python 3中,input()函数总是返回一个字符串(这与Python 2不同,并且可能是混乱的根源,因为您使用的Python教程可能不知道Python 3)。由于Python强烈(但动态)地键入,因此您无法使用字符串和整数执行算术计算,如您的错误消息所示。您必须先使用tempint()字符串转换为整数:

temp = int(temp)

如果temp不包含可以转换为整数的内容,则会出现ValueError异常。默认情况下,异常将终止程序并提供信息性错误消息。要处理异常并采取替代操作,您的Python教程应该有一整章。

答案 2 :(得分:0)

您可以删除'eval',因为输入确实返回了正确的类型。或者将临界值转换为int:

temp = int(temp)

答案 3 :(得分:0)

我认为您需要重新考虑如何阅读数据。 input()返回用户键入的任何文本的eval(),因此当用户键入“quit”时,我会发错误。

相反,我建议使用返回文本的raw_input()。然后在转换为int之前检查它是否等于“退出”。