这个程序有点痛苦。它必须找到平均温度。如果它低于60,它必须计算有多少(平均值)低于60.如果平均温度高于80,它必须对80以上的任何数字做同样的操作。编辑:而不是要求用户#对于值,程序将继续接受,直到给出空白值。这是我的计划:
def main():
sums = 0.0
count = 0
heating = 0
cooling = 0
temp = (input("enter a number, <enter> to quit: "))
while temp != " ":
x = float(temp)
sums = sums + x
count = count + 1
temp = eval(input("enter a number, <enter> to quit: "))
avg = sums/count
if avg < 60:
if temp < 60:
heating = heating + 1
if avg > 80:
if temp > 80:
cooling = cooling + 1
print(avg, heating, cooling)
main()
这是我一直在犯的错误。我已尝试过使用和不使用eval请求输入的变体,以及在float和int之间切换temp。我经常会遇到错误,更常见的是这个错误。
Traceback (most recent call last):
File "C:/Python33/heatingcooling.py", line 24, in <module>
main()
File "C:/Python33/heatingcooling.py", line 13, in main
temp = eval(input("enter a number, <enter> to quit: "))
File "<string>", line 0
^
SyntaxError: unexpected EOF while parsing
关于如何让这个程序运行的任何想法都将非常感激。作为旁注,我们不允许使用原始输入,这似乎是此
的最常见解决方案答案 0 :(得分:1)
您当前的循环会将temp
与x
的几个地方混为一谈。您需要对它们保持一致,因为它们的类型不同(temp
是字符串而x
是float
)。这是代码的固定版本,还有一些其他修复,例如测试空字符串并为avg
提供初始值:
sums = 0.0
count = 0
heating = 0
cooling = 0
avg = 0 # need an initial value for this, in case the first input is empty!
temp = input("enter a number, <enter> to quit: ") # temp is always a string
while temp: # equivalent to testing temp != ""
x = float(temp)
sums = sums + x
count = count + 1
avg = sums/count
if avg < 60:
if x < 60: # compare to x here, not temp
heating = heating + 1
if avg > 80:
if x > 80: # here too
cooling = cooling + 1
temp = input("enter a number, <enter> to quit: ") # moved this to the end of the loop
print(avg, heating, cooling)
答案 1 :(得分:0)
假设您使用的是Python 3.x,删除eval()
应该适用于input(...)
temp = input("enter a number, <enter> to quit: ")
可以找到input
的Python 3文档here
编辑听起来你需要将你的temp变量转换为int,然后从input()方法获取它,默认情况下是str。
temp = float(input("enter a number, <enter> to quit: "))
此外,当您获得第一个temp
变量时,请删除外部括号:
temp = (input("enter a number, <enter> to quit: "))
到
temp = input("enter a number, <enter> to quit: ")
假设您输入一个数值,那么您应该能够在while循环中将此值转换为float。
<强> EDIT2 强>
在你的while循环中将其更改为:
while temp: # or while temp != ""
# etc.
这将解决ValueError: could not convert string to float
错误。您在输入空格“”时终止了while循环,但是当用户按Enter键时,输入实际上是一个空字符串“”。因此,您仍然进入while循环,然后尝试将空字符串“”输入转换为float,然后引发ValueError。