Python赛车冠军

时间:2013-06-08 18:30:11

标签: python class loops python-3.x

我需要创建一个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名选手填写,我会永远感激。

非常感谢你的帮助!

1 个答案:

答案 0 :(得分: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