【发布时间】:2017-07-15 16:13:39
【问题描述】:
我的班级作业让我很头疼。 定义一个名为 Car 的类,具有以下属性:
总里程表里程
以英里/小时为单位的速度
驱动程序名称
赞助商
总里程表里程和速度应初始化为零。
创建一个包含 20 辆具有随机(或真实(链接到外部网站。)链接到外部网站。)司机和赞助商姓名的独特车辆的列表。
您的主程序应该模拟赛车在比赛中的进程。每一模拟分钟,车辆都会在 1 到 120 之间选择一个新的随机速度,并且它们的里程表里程每分钟都会使用以下公式更新:
里程表里程 = 里程表里程 + 速度 * 时间 由于速度以英里/小时为单位,时间也应以小时为单位(1 分钟是一小时的 1/60)。
我想我对使用def 的理解可能已经不正确了。正如标题所说,当我运行我的程序时,它会说
Traceback(最近一次调用最后一次): 文件“/Users/darrellanddawn/Documents/Nascar.py”,第 63 行,在 主要()
文件“/Users/darrellanddawn/Documents/Nascar.py”,第 57 行,在 main 赛车手()
NameError: name 'racers' 未定义
关于我为什么会收到此错误的任何建议或解释?
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()
【问题讨论】:
-
racers()仅在Car类中定义,而不在main()方法中定义 -
请将您遇到的错误发布在您的问题中,并指出是哪一行给出了错误
-
您好像误会了
global。它只是说您想在全局范围内修改具有该名称的变量。它不会创建全局变量。尝试在没有全局变量的情况下实现它,这应该解决该问题以及出现的下一个“x”问题。 -
@MSeifert 所以不使用全局变量以便在多个函数中使用变量?打算尝试您的建议,但想确保我理解。我学习 python 的第 5 周,但就示例、书籍、视频等而言,它们并没有给我们太多帮助。
-
@GrayCygnus,进行了编辑以显示错误和线条。感谢您指出这一点。
标签: python python-3.x nameerror