好的,这是作业:
你是游泳运动员,你想比较你所有的比赛时间,找到>最快的比赛。编写一个程序,连续将比赛时间视为双倍>从标准输入开始,直到输入为“不再参加比赛”,此时它将打印出你最快比赛的时间。
相当直接,或者我认为。通过一点点工作,我想出了以下内容:
race_time = input("")
list1=[]
while race_time != ("no more races"):
list1.append("")
if race_time == ("no more races"):
print(min(list1))
好的,请求输入。只要race_time中的输入不等于“不再参加比赛”,您就会输入下一次并将该值附加到list1。一旦race_time等于“不再参加比赛”,就会打印list1中的最小值。
直接向前?
好吧,我把这些代码插入MyProgrammingLab并提交了它。它给了我以下......'反馈'
您的代码未按预期工作。 更多提示: ⇒我们认为你可能想考虑使用:float ⇒您的方法的解决方案通常不使用:== ⇒使用您的方法的解决方案通常不使用:if
好的......那我为什么要用那些呢?
无论如何,所以我把代码扔进了IDLE并运行它。在这里我收到以下错误:
追踪(最近一次通话): 文件“C:\ Users \ F2-233 \ Desktop \ times.py”,第4行,in list1.append( “”) 的MemoryError
那么......什么是追溯?这本书没有谈到这一点,在网上搜索我找到了很多代码示例来解决这个问题,但没有找到解决问题的原因。
答案 0 :(得分:0)
首先,回答关于 Traceback 的问题:“traceback”是代码中某个位置的映射,导致它在运行时中断。
您之所以看到这一点,是因为您在Traceback中描述的行中超出了应用程序的可用内存:list1.append("")
在这种情况下,请务必注意race_time = input("")
只会执行一次(初始化race_time
时)。每次引用race_time
时都不会执行。
虽然这不会为您完成任务,但它会指向一个不错的方向:
race_time = input("")
list1=[]
while race_time != ("no more races"):
list1.append("")
race_time = input("") # prompt for another race time
if race_time == ("no more races"):
print(min(list1))
答案 1 :(得分:0)
你有正确的想法,但我在你的解决方案中看到了2个问题。
输入提示在循环之外,这意味着只会向用户询问一次比赛时间。
用户输入保存为字符串,要进行值比较,必须是float(python中为double)。
结果代码是:
list1 = []
while True:
race_time = input()
if race_time == 'no more races':
break
list1.append(float(race_time))
print(min(list1))
答案 2 :(得分:0)
“比赛时间”输入的格式是什么? (例如它是“3.456”秒)
在任何情况下,这里都是一个代码,在给出“不再参加比赛”之前不断要求用户输入,在这种情况下,程序会退出:
def race_time():
list1 = []
while True:
race_time = input("")
if race_time == ("no more races"):
print("min race time: {0}".format(min(list1)))
break
else:
list1.append(float(race_time))