课程作业:比赛时间分拣机

时间:2017-10-05 17:50:52

标签: python

好的,这是作业:

  

你是游泳运动员,你想比较你所有的比赛时间,找到>最快的比赛。编写一个程序,连续将比赛时间视为双倍>从标准输入开始,直到输入为“不再参加比赛”,此时它将打印出你最快比赛的时间。

相当直接,或者我认为。通过一点点工作,我想出了以下内容:

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

那么......什么是追溯?这本书没有谈到这一点,在网上搜索我找到了很多代码示例来解决这个问题,但没有找到解决问题的原因。

3 个答案:

答案 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个问题。

  1. 输入提示在循环之外,这意味着只会向用户询问一次比赛时间。

  2. 用户输入保存为字符串,要进行值比较,必须是float(python中为double)。

  3. 结果代码是:

    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))