python - 在 python 中使用两个函数编写了一个简单的测验代码,但未定义列表
问题描述
使用 2 个函数设计了一个简单的琐事测验,但出现错误,我该如何解决这个问题?: 1 Traceback(最近一次调用最后一次):文件第 31 行,在 run_quiz(Qlist) 中 NameError: name 'Qlist' is not defined
这是代码: 在此处输入图像描述 ***from random import shuffle print('Welcome to the fun quiz!')
filename=input('请输入文件名(quiz.txt)开始:')
with open(filename,'rb') as f:
lines=f.readlines()
numQ=int(input('你想回答多少问题 (10-15)?'))
def questions(numQ):
'''这个函数打乱测验库并创建一个问题列表供用户回答'''
shuffle(lines)
Qlist=lines[:numQ]
return Qlist questions(numQ)
def run_quiz(Qlist):
'''向用户提问,判断答案是否正确,计算正确答案。'''
right=0
for Qlist中的行:
问题,rightAnswer=line.strip().split('\t')
答案=输入(问题+'')
如果 answer.lower()==rightAnswer:
print('正确!')
右+=1
别的:
print('Incorrect.The right answer is', rightAnswer)
return print('You got',right,'out of',numQ,'which is',right/numQ*100,'%.') run_quiz(Qlist) ***
解决方案
您可以像这样使用返回值。当 Qlist 从问题中返回时,您调用该函数并将其作为参数传递给 run_quiz
filename=input('Please enter the filename(quiz.txt)to get started:' )
with open(filename,'rb') as f:
lines=f.readlines()
numQ=int(input('How many questions would you like to answer (10-15)?'))
def questions(numQ):
shuffle(lines)
Qlist=lines[:numQ]
return Qlist
def run_quiz(Qlist):
right=0
for line in Qlist:
question, rightAnswer=line.strip().split('\t')
answer=input(question+' ')
if answer.lower()==rightAnswer:
print('Correct!')
right+=1
else:
print('Incorrect.The right answer is', rightAnswer)
return print('You got',right,'out of',numQ,'which is',right/numQ*100,'%.')
run_quiz(questions(numQ))