【问题标题】:Python car race winner [closed]Python赛车比赛冠军[关闭]
【发布时间】:2013-06-04 20:24:14
【问题描述】:

我需要创建一个 Python 程序,该程序将使用公式 odometer_miles = odometer_miles + speed * time 和一个名为 Car 的类来确定比赛的获胜者,该类具有“总里程表里程”、“速度”、“驾驶员姓名”和“赞助商”属性。

speed 变量是一个介于 0 和 120 (mph) 之间的数字,每分钟随机生成一次。然后再次执行等式,更新odometer_miles 变量。

一旦odometer_miles 变量达到 500(或大于 500 的最接近的值)英里,比赛就结束了,并且无论哪一个赛车手(20 人一组)达到 500 英里,都将被宣布为获胜者。确定获胜者后,程序需要打印“司机姓名”和“赞助商”。

我认为我已经正确创建了类,但程序的其余部分远远超出了我的能力。我的课本还不够用,我也联系不上我的教授。在过去的几个小时里,我一直试图弄清楚这一点,但无济于事。

这是我目前所拥有的:

class Car:
    def __init__(self, odo_miles, speed, driver, sponsor):
        self.odo_miles = odo_miles
        self.speed = speed
        self.driver = driver
        self.sponsor = sponsor

如果有人能告诉我如何只用两名赛车手或足够我可以填补所需的全部 20 名赛车手,我将永远感激不尽。

非常感谢您的帮助!

【问题讨论】:

    标签: python class loops python-3.x


    【解决方案1】:

    这个汽车类应该有你需要的一切,注意你增加赛车手的顺序很重要。无论如何,从这里你可以创建一个列表/一组汽车,然后循环遍历它,对每一个应用 updateMinute() 直到你有一个赢家。当 updateMinute() 返回 True 时,您可以跳出循环,并使用您当前更新的汽车来查找驱动程序和赞助商。

    import random
    class Car:
    
        def __init__(self, odo_miles, speed, driver, sponsor):
            self.odo_miles = odo_miles
            self.speed = speed
            self.driver = driver
            self.sponsor = sponsor
    
        def updateMinute():
            self.odo_miles += speed              #I'm updating the distance before newSpeed
                                                 #So that the original speed passed in is used
            if self.odo_miles > 500:
                return True
            self.speed = random.randrange(120)
            return False
    

    遍历列表:

    while True:
        for c in cars:
            finished = c.updateMinute()
            if finished:
                print_relevant_stuff()
                return
    

    【讨论】:

    • 我会在“return True”之后移动 self.speed 的更新。
    • 完成了,但这并不重要。它的一项操作最终将保存一次。 (当汽车获胜时)。
    • 是的,但是这样你仍然可以知道最后的速度是多少。否则,您最终会得到一个从未使用过速度值的实例。
    • 如何让 updateMinute() 遍历我的列表?我假设我会用while 循环做点什么,对吗?对不起,如果这是一个愚蠢的问题。我正在尝试将 15 周的课程调整为 5 周,这有点让人不知所措。
    • @user2466838:我编辑了我的 OP 来回答这个问题。
    猜你喜欢
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多