написал простой код теста, используя две функции в python, но список не определен - PullRequest
0 голосов
/ 21 апреля 2020

Разработан простой тест викторины с использованием 2 функций, но я получил ошибку, как я могу это исправить?: 1 Traceback (последний вызов был последним): Файл строка 31, в run_quiz (Qlist) NameError: имя 'Qlist' не определено

Вот код: введите здесь описание изображения *** из случайного импорта в случайном порядке печати ( «Добро пожаловать в забавную викторину!»)

filename = input («Пожалуйста, введите имя файла (quiz.txt), чтобы начать:»)
с open (filename, 'rb') как f:
lines = f.readlines ()

numQ = int (input ('Сколько вопросов вы хотели бы ответить (10-15)?'))

def вопросов (numQ ):
'' 'Эта функция перетасовывает банк викторины и создает список вопросов, на который пользователи могут ответить' ''
shuffle (линии)
Qlist = lines [: numQ]
return Qlist Вопросы (numQ)

def run_quiz (Qlist):
'' 'Задайте вопросы пользователю, определите, является ли ответ правильным, и посчитайте правильные ответы.' ''
right = 0
для строки в Qlist:

вопрос, rightAnswer = line.strip (). Split ('\ t')

answer = ввод (вопрос + '')

if answer.lower () == rightAnswer:

print ('Correct!')

right + = 1

else:

print ('Неправильный. Правильный ответ', rightAnswer )
return print ('Вы получили', верно, 'из', numQ, 'который есть', right / numQ * 100, '%.') Run_quiz (Qlist) ***

1 Ответ

0 голосов
/ 21 апреля 2020

Вы можете использовать возвращаемое значение следующим образом. Когда 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...