[英]Assignment: Python 3.3: Using while loop to check for condition of attribute in class
我正在嘗試使用“ while”循環來檢查類中屬性的條件。 具體來說,我需要檢查里程表,看是否有任何物體達到500。該代碼用於模擬比賽。 因此,它需要從整體上檢查類,以查看任何對象的里程表是否達到500(或更高),並且在發生這種情況時,停止添加到里程表中並聲明贏家。 但是,現在,“ while”循環一直運行到每個里程表的對象都達到500。將“ while”循環移到“ for”循環之前會導致錯誤,表示汽車類沒有里程表屬性。
所以我的問題是,如何使我的“ while”循環在整個類中起作用,而不是在每個對象上單獨起作用? 還是我試圖解決這個完全錯誤的問題? 我在這里很茫然,但我認為我正在正確地解決這個問題。 這就是我所擁有的全部。
from random import randint
import time
class car:
def __init__(self, Driver, Sponsor, Odometer=0, Speed=0):
self.Driver = Driver
self.Sponsor = Sponsor
self.Odometer = Odometer
self.Speed = randint(1,121)
drivers={'David': 'Burger King',
'Travis': 'Dr Pepper',
'Landon': 'Precon Marine',
'Jamie': 'Cessna',
'Juan': 'Target',
'Ken': 'Federated Auto Parts',
'Timmy': 'OXYwater',
'Josh': 'MDS Transport',
'Kurt': 'Furniture Row',
'Casey': 'Geico',
'Kasey': 'Farmers Insurance',
'Jeff': 'Axalta',
'Jimmie': 'Lowes',
'Dale': 'National Guard',
'Mike': 'Plinker Tactical',
'Denny': 'FedEx',
'Kyle': 'Mars Brands',
'Matt': 'Husky',
'Bobby': 'Kingsford',
'Clint': '5-Hour Energy'
}
cars = [car(driver, sponsor) for driver, sponsor in drivers.items()]
for car in cars:
while car.Odometer < 500:
car.Odometer=car.Odometer+car.Speed*0.17
car.Speed = randint(1,121)
print(car.Driver, car.Odometer, car.Speed)
也許是這樣的嗎?
from operator import attrgetter
cars = [car(driver, sponsor) for driver, sponsor in drivers.items()]
# we find the car with the max Odometer
car_max_odometer = max(cars, key=attrgetter("Odometer"))
while car_max_odometer.Odometer < 500
for car in cars:
car.Odometer=car.Odometer+car.Speed*0.17
car.Speed = randint(1,121)
print(car.Driver, car.Odometer, car.Speed)
car_max_odometer = max(cars, key=attrgetter("Odometer"))
print("We have a winner! {}, {}, {}".format(car_max_odometer.Driver, car_max_odometer.Odometer, car_max_odometer.Speed))
您還應該查看PEP8,您的類名,變量名和空格不遵循約定。
此外:
self.Speed = randint(1,121)
應該:
self.Speed = Speed
由於您將速度作為關鍵字參數傳遞
如果您希望在傳遞速度0時將其默認設置為randint(1,121),或者如果將其設置為None,則可以執行
self.Speed = Speed or randint(1,121)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.