我正在尝试创建一个要求一系列温度的程序。我将最终给出给定的温度数量(最高和最低)。
我试图让循环重复询问新的温度,但继续启动不确定的循环。
def main():
temp = input("Enter a temperature")
temperatures = []
while(True):
temperatures.append(temp):
if temp == 'done':
break
print(main())
print('The highest temperature is', max([temperatures]))
print('The lowest temperature is', min([temperatures]))
print('The number of temperatures is', len([temperatures]))
我希望while循环不断询问我输入温度,直到输入完成为止。
答案 0 :(得分:0)
此代码已经存在一些错误。对于初学者来说这是正常的,只要纠正他们就可以了。
第4行:应该为“真”:
第5行:切除结肠。另请注意,“ temp”是字符串。您应该得到一个int列表。使用“ int()”。
第10行:此打印不会完成任何操作(除了打印无用的“无”),因为该函数不会返回任何内容。调用此函数也不会有任何效果,因为“温度”和“温度”是局部变量。 (如果您不了解,请不要查找任何东西,它们是在函数基础知识中教的。)
这不是错误,但是您可以只说:
,而不是先使用“ While True”,然后在满足某些“ if”条件时使用“ break”,while temp != done:
temperatures.append(temp)
现在对于整个代码和您的问题,实际上都不需要使用函数。特别是因为您只调用过一次函数。
这将为您提供所需的列表:
temperatures = []
temp = input("Enter a temperature")
while temp != "done":
temperatures.append(int(temp))
temp = input("Enter a temperature")
或者,
temperatures = []
while True:
temp = input("Enter a temperature")
if temp == "done":
break
temperatures.append(int(temp))
获得列表温度后,只需:
print(temperatures)
print('The highest temperature is', max(temperatures))
print('The lowest temperature is', min(temperatures))
print('The number of temperatures is', len(temperatures))
为什么您的代码不起作用?首先,您使用了一个函数,由于局部和全局变量问题,该函数令人困惑。
然后,您还将While循环放在错误的位置。您在循环之前要求输入,因此“ temp”将始终是您输入的输入。它永远不会要求您再输入一次,程序永远不会结束。它将永远向“温度”添加相同的“温度”。 (使用Ctrl + C中断程序。)
答案 1 :(得分:0)
这是一些新代码
def get_temps():
result = []
while True :
temp = input("Enter a temperature: ")
if temp == 'done':
break
result.append(float(temp))
return result
temperatures = get_temps()
print('The highest temperature is', max(temperatures))
print('The lowest temperature is', min(temperatures))
print('The number of temperatures is', len(temperatures))
您的代码中有一些问题。
第一个是您在循环之前要求输入。这意味着您的代码将获得一个输入,然后在无限循环中旋转。只需将输入移动到循环中,这样您就可以每次迭代询问一次。
在添加前进行第二次检查是否完成。否则,您将在结果列表中获得字符串done
。
您的temperature
列表(我将其重命名以生成代码)在该函数本地,因此您无法在该函数外部访问它。因此,解决此问题的方法是返回它。
第四max([temperatures])
将temperatures
列表包装在另一个列表中。那么一个元素列表的最大值是多少?是的,它是唯一的条目。只需丢掉多余的方括号,例如max(temperatures)
。
最后一个问题是您的输入是字符串。因此,当您使用max
比较它们时,它们是在lexicographically之间进行比较(大词仅表示“作为字符串”,因此,例如“ 2”被认为比“ 10”高)。您可以将值转换为float
,这是一种数字格式,虽然存在一些精度问题,但可以满足您的目的。这意味着min
和max
将值比较为数字。