获取 "name" is not defined 错误
Getting "name" is not defined error
我的 class 有一个作业让我很头疼。
定义一个名为 Car 的 class 具有以下属性:
里程表总英里数
速度(英里/小时)
Driver 姓名
赞助商
总里程表英里数和速度应初始化为零。
创建一个包含 20 辆具有随机(或真实(外部站点链接。)外部站点链接。)driver 和赞助商名称的独特车辆的列表。
你的主程序应该模拟车辆在比赛中的进程。每模拟一分钟,车辆都会在 1 到 120 之间选择一个新的随机速度,并且使用以下等式每分钟更新一次里程表里程:
odometer_miles = odometer_miles + 速度 * 时间
由于速度以英里每小时为单位,时间也应以小时为单位(1 分钟是 1/60 小时)。
我想也许我对使用 def
的理解有误。正如标题所说,当我 运行 我的程序时它说
Traceback (most recent call last):
File "/Users/darrellanddawn/Documents/Nascar.py", line 63, in
main()
File "/Users/darrellanddawn/Documents/Nascar.py", line 57, in main
racers()
NameError: name 'racers' is not defined
关于我为什么会收到此错误的任何建议或解释?
start = True
#Car and drivers
class Car:
def racers():
global miles
miles = 0
speed = 0
drivers = {'00' : 'Van Hellsing', '01' : 'Vlad Dragul', '02' :'Lightening McSeen',
'03' : 'Viktor Frankenstein', '04' : 'Richy Rich', '05' : 'Lynn Steely',
'06' : 'Roscoe Bautista','07' : 'Matt Pilling', '08' :'Fredric Montrose',
'09' : 'Ward Clutts', '10' :'Miles Bruck', '11': 'Darrin Isakson', '12' :'Chauncey Speno',
'13' : 'Billie Coghill', '14' : 'Donn Lusher', '15' : 'Vaughn Naugle', '16' :'Patrick Climer',
'17' : 'Jerome Harring', '18' : 'Carlo Bohanon', '19' : 'Brian Coggins'}
sponsers = {'00' : 'Pepesi', '01' : 'Coke', '02' : 'Pensoil',
'03' : 'Wal-Mart', '04' : 'Exxon', '05' : 'Shell',
'06' : 'Food Lion','07' : 'McDonalds', '08' :'Ubisoft',
'09' : 'Taco Bell', '10' :'Good Year', '11': 'Apple', '12' :'Microsoft',
'13' : 'Lowes', '14' : 'Home Depot', '15' : 'Save-A-Lot', '16' :'Sprint',
'17' : 'Verison', '18' : 'Virgin Mobile', '19' : 'Huggies'}
def race():
import random
global speed
winner = False
time = 0
while not winner:
speed = random.randint(1,120)
time = + 1
miles = miles + (speed / 60) * time
def win(driver, sponser):
if miles == 500:
winner = True
while winner:
print('The winner is: ', drivers, sponsers)
def stop():
print('Thank you for watching the UAT 500!')
import sys
sys.exit(0)
def main():
Car
racers()
race()
win()
stop()
while start:
main()
class Car():
#initializes properties of the car
def __init__(self,driver_name,sponsor,car_name):
self.miles = 0 # self refers to car instance
self.speed = 0
self.driver_name = driver_name
self.sponsor = sponsor
self.car_name = car_name
# changes the cars speed to a new speed
def update_speed(self, new_speed):
self.speed = new_speed
#calculates the total distance traveled
def distance_traveled(self, elapsed_time):
self.miles += self.speed * elapsed_time
def race(car1,car2,distance):
elapsed_time = 0.0
_time = 0.01
won = False
while not won:
#updates speed of the car to a random int between 100 and 150
car1.update_speed(random.randint(100,150))
#print("{} speed: {}".format(car1.car_name,car1.speed))
#updates the distance traveled with increments of _time
car1.distance_traveled(_time)
#print("{} miles: {}".format(car1.car_name,car1.miles))
car2.update_speed(random.randint(100,150))
# print("{} speed: {}".format(car2.car_name,car2.speed))
car2.distance_traveled(_time)
# print("{} miles: {}".format(car2.car_name,car2.miles))
if car2.miles >= distance:
print("{} is the winner!!".format(car2.driver_name))
won = True
if car1.miles >= distance:
print("{} is the winner!!".format(car1.driver_name))
won = True
elapsed_time += _time
#print("elapsed time: {}".format(elapsed_time))
def main():
#instantiates two car objects
car1 = Car("Van Hellsing","Pepsi","car1")
car2 = Car("Vlad Dragul","Coke","car2")
# races the two cars
race(car1,car2,10)
if __name__ == "__main__":
main()
嗨,这里有一些建议...
- 避免使用
global
关键字,而是使用 return
语句
- 在代码顶部导入模块
- 创建完成单个任务的函数
- 将赛车功能更改为
__init__
方法
- 驱动程序未在汽车中初始化 class 因为它不特定于任何汽车
我的 class 有一个作业让我很头疼。 定义一个名为 Car 的 class 具有以下属性:
里程表总英里数
速度(英里/小时)
Driver 姓名
赞助商
总里程表英里数和速度应初始化为零。
创建一个包含 20 辆具有随机(或真实(外部站点链接。)外部站点链接。)driver 和赞助商名称的独特车辆的列表。
你的主程序应该模拟车辆在比赛中的进程。每模拟一分钟,车辆都会在 1 到 120 之间选择一个新的随机速度,并且使用以下等式每分钟更新一次里程表里程:
odometer_miles = odometer_miles + 速度 * 时间 由于速度以英里每小时为单位,时间也应以小时为单位(1 分钟是 1/60 小时)。
我想也许我对使用 def
的理解有误。正如标题所说,当我 运行 我的程序时它说
Traceback (most recent call last): File "/Users/darrellanddawn/Documents/Nascar.py", line 63, in main()
File "/Users/darrellanddawn/Documents/Nascar.py", line 57, in main racers()
NameError: name 'racers' is not defined
关于我为什么会收到此错误的任何建议或解释?
start = True
#Car and drivers
class Car:
def racers():
global miles
miles = 0
speed = 0
drivers = {'00' : 'Van Hellsing', '01' : 'Vlad Dragul', '02' :'Lightening McSeen',
'03' : 'Viktor Frankenstein', '04' : 'Richy Rich', '05' : 'Lynn Steely',
'06' : 'Roscoe Bautista','07' : 'Matt Pilling', '08' :'Fredric Montrose',
'09' : 'Ward Clutts', '10' :'Miles Bruck', '11': 'Darrin Isakson', '12' :'Chauncey Speno',
'13' : 'Billie Coghill', '14' : 'Donn Lusher', '15' : 'Vaughn Naugle', '16' :'Patrick Climer',
'17' : 'Jerome Harring', '18' : 'Carlo Bohanon', '19' : 'Brian Coggins'}
sponsers = {'00' : 'Pepesi', '01' : 'Coke', '02' : 'Pensoil',
'03' : 'Wal-Mart', '04' : 'Exxon', '05' : 'Shell',
'06' : 'Food Lion','07' : 'McDonalds', '08' :'Ubisoft',
'09' : 'Taco Bell', '10' :'Good Year', '11': 'Apple', '12' :'Microsoft',
'13' : 'Lowes', '14' : 'Home Depot', '15' : 'Save-A-Lot', '16' :'Sprint',
'17' : 'Verison', '18' : 'Virgin Mobile', '19' : 'Huggies'}
def race():
import random
global speed
winner = False
time = 0
while not winner:
speed = random.randint(1,120)
time = + 1
miles = miles + (speed / 60) * time
def win(driver, sponser):
if miles == 500:
winner = True
while winner:
print('The winner is: ', drivers, sponsers)
def stop():
print('Thank you for watching the UAT 500!')
import sys
sys.exit(0)
def main():
Car
racers()
race()
win()
stop()
while start:
main()
class Car():
#initializes properties of the car
def __init__(self,driver_name,sponsor,car_name):
self.miles = 0 # self refers to car instance
self.speed = 0
self.driver_name = driver_name
self.sponsor = sponsor
self.car_name = car_name
# changes the cars speed to a new speed
def update_speed(self, new_speed):
self.speed = new_speed
#calculates the total distance traveled
def distance_traveled(self, elapsed_time):
self.miles += self.speed * elapsed_time
def race(car1,car2,distance):
elapsed_time = 0.0
_time = 0.01
won = False
while not won:
#updates speed of the car to a random int between 100 and 150
car1.update_speed(random.randint(100,150))
#print("{} speed: {}".format(car1.car_name,car1.speed))
#updates the distance traveled with increments of _time
car1.distance_traveled(_time)
#print("{} miles: {}".format(car1.car_name,car1.miles))
car2.update_speed(random.randint(100,150))
# print("{} speed: {}".format(car2.car_name,car2.speed))
car2.distance_traveled(_time)
# print("{} miles: {}".format(car2.car_name,car2.miles))
if car2.miles >= distance:
print("{} is the winner!!".format(car2.driver_name))
won = True
if car1.miles >= distance:
print("{} is the winner!!".format(car1.driver_name))
won = True
elapsed_time += _time
#print("elapsed time: {}".format(elapsed_time))
def main():
#instantiates two car objects
car1 = Car("Van Hellsing","Pepsi","car1")
car2 = Car("Vlad Dragul","Coke","car2")
# races the two cars
race(car1,car2,10)
if __name__ == "__main__":
main()
嗨,这里有一些建议...
- 避免使用
global
关键字,而是使用return
语句 - 在代码顶部导入模块
- 创建完成单个任务的函数
- 将赛车功能更改为
__init__
方法 - 驱动程序未在汽车中初始化 class 因为它不特定于任何汽车