2014-11-24 2 views
0

이 없습니다. 이 프로그램은 경주를 시뮬레이트하기로되어 있고 차가 500 마일 가량 지나면 우승자 이름과 후원자가 인쇄되어 문제가 발생합니다. 이 속성 오류를 수정하려면 어떻게해야합니까?파이썬 AttributeError : 나는 내가 오류가 다음 코드를 실행하려고 할 때마다 '목록'개체가 어떤 속성 '인종'

from random import randint 

class Car: 
    def __init__(self, DriverName, SponsorName): 
     RaceWinner = False 
     self.OdometerTotal = 0 
     self.Time = 0 
     self.Driver = DriverName 
     self.Sponsor = SponsorName 
    def Race(self): 
     LastSpeed = 0 
     while self.OdometerTotal < 500: 
      self.Time += 1 
      self.CurrentSpeed = randint(1, 120) 
      self.OdometerTotal +=(self.CurrentSpeed/60 * self.Time) + ((self.CurrentSpeed - LastSpeed)/(60 * self.Time)) 
      LastSpeed = self.CurrentSpeed 
      if self.OdometerTotal >= 500: 
       print(self.Driver, "sponsored by", self.Sponsor, "was the winner.") 
       RaceWinner = True 
       return RaceWinner 
    def Winner(self): 
     if RaceWinner == True: 
      print(self.Name) 
      print(self.Sponsor) 

DriverList = [Car("Aric Almirola","Richard Petty Racing"),Car("Marcos Ambrose", "Richard  Petty Motorsports"),Car("Greg Biffle", "Roush Fenway Racing"),Car("Dave Blaney", "Tommy Baldwin  Racing"),Car("Clint Bowyer", "Michael Waltrip Racing"),Car("Jeff Burton", "Richard Childress Racing"),Car("Kurt Thomas Busch", "Furniture Row Racing"),Car("Kyle Busch", "Joe Gibbs Racing"),Car("Liz LeMuiex", "Hendrick Motorsports"),Car("Dale Earnhardt Jr.", "Hendrick Motorsports"),Car("Carl Edwards", "Roush Fenway Racing"),Car("David Gilliland", "Front Row Motorsports"),Car("Jeff Gordon", "Hendrick Motorsports"),Car("Denny Hamlin", "Joe Gibbs Racing"),Car("Kevin Harvick", "Richard Childress Racing"),Car("Sam Hornish Jr", "Penske Racing"),Car("Jimmie Johnson", "Hendrick Motorsports"),Car("Kasey Kahne", "Hendrick Motorsports"),Car("Matt Kenseth", "Roush Fenway Racing"),Car("Brad Keselowski", "Penske Racing")] 

while True: 
    DriverList.Race() 
     if RaceWinner in DriverList: 
      print("The winner is", DriverList.Winner()) 
      break 

DriverList = ["Aric Almirola", "Marcos Ambrose", "Greg Biffle", "Dave Blaney", "Clint Bowyer", "Jeff Burton", "Kurt Thomas Busch", "Kyle Busch", "Liz LeMuiex", "Dale Earnhardt Jr.", "Carl Edwards","David Gilliland", "Jeff Gordon", "Denny Hamlin", "Kevin Harvick", "Sam Hornish Jr", "Jimmie Johnson", "Kasey Kahne", "Matt Kenseth", "Brad Keselowski"] 

SponsorList = ["Richard Petty Racing", "Richard Petty Racing", "Roush Fenway Racing", "Tommy Baldwin Racing", "Michael Waltrip Racing", "Richard Childress Racing", "Furniture Row Racing", "Joe Gibbs Racing", "Hendrick Motorsports", "Hendrick Motorsports", "Roush Fenway Racing", "Front Row Motorsports","Hendrick Motorsports", "Joe Gibbs Racing", "Richard Childress Racing", "Penske Racing", "Hendrick Motorsports", "Hendrick Motorsports", "Roush Fenway Racing", "Penske Racing"] 
+0

아니요, 목록에 문제가 없습니다. 그것은 당신의 프로그램을 unalvageable이야. –

+0

그 차가 500을 넘을 때까지 다른 처리를하기 위해 돌아 오지 않기 때문에 처음으로 호출 된 Car는 항상 "Win"됩니다. –

답변

0

DriverList은 개체 목록입니다. 이 목록에서 객체를 선택하여 함수 race을 호출해야합니다.

#Code-------- 
num = 0 
while num<(len(DriverList)-1): 
    DriverList[num].Race() 
    num+=1 
if RaceWinner in DriverList: 
    print("The winner is", DriverList.Winner()) 
    break 
관련 문제