该程序应该在给定的一天计算低于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")
答案 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强烈(但动态)地键入,因此您无法使用字符串和整数执行算术计算,如您的错误消息所示。您必须先使用temp
将int()
字符串转换为整数:
temp = int(temp)
如果temp
不包含可以转换为整数的内容,则会出现ValueError
异常。默认情况下,异常将终止程序并提供信息性错误消息。要处理异常并采取替代操作,您的Python教程应该有一整章。
答案 2 :(得分:0)
您可以删除'eval',因为输入确实返回了正确的类型。或者将临界值转换为int:
temp = int(temp)
答案 3 :(得分:0)
我认为您需要重新考虑如何阅读数据。 input()
返回用户键入的任何文本的eval()
,因此当用户键入“quit”时,我会发错误。
相反,我建议使用返回文本的raw_input()
。然后在转换为int之前检查它是否等于“退出”。