Простой тест в Python, который читает файл CSV в формате «ответ, вопрос».Программа была запущена до того, как я решил попробовать изменить исходный код.Я ссылался на разные источники, чтобы определить, правильно ли были закодированы csv, random, классы и цикл, но код не работает с этой обновленной версией с измененным кодом.
Оригинальный код
player_name = input("What is your name? ")
print(f"Welcome, {player_name}, to Quiz!")
play_quiz = str(input("Are you ready to play?\n"))
if play_quiz != "y":
exit()
class Question:
def __init__(self, prompt, answer):
self.prompt = prompt
self.answer = answer
# sample quiz questions go here where ["Question", "Answer choices from a-c"]
question_prompts = []
questions = [
Question(question_prompts[0], "b"),
Question(question_prompts[1], "a"),
]
def run_test(questions):
score = 0
for question in questions:
answer = input(question.prompt)
if answer == question.answer:
score += 1
print("You answered " + str(score) + "/" + str(len(questions)) + " correct.")
return input("Want to play again? (y/n): ") == "y".lower()
play_again = True
while play_again:
play_again = run_test(questions)
Рефакторированный код
import csv
import random
player_name = input("What is your name? ")
print(f"Welcome, {player_name}, to the Quiz!")
play_quiz = str(input("Are you ready to play? "))
if play_quiz != "y":
exit()
class Question:
def __init__(self, prompt, answer):
self.prompt = prompt
self.answer = answer
def quiz():
score = 0
questions_right = 0
quiz_file = open(characters_file, "r")
quiz_data = quiz_file.readlines()
random.shuffle(quiz_data)
question_number = 1
for question in range(65):
x = quiz_data[question].strip()
data = x.split(",")
Question = data.prompt[1]
correct_answer = data.answer[1]
def run_test(quiz_data):
answer = input("What is your answer? ")
if answer == correct_answer:
score += 1
question_right = question_number + 1
else:
print("Incorrect.")
print(f"Correct answer should be: {CorrectAnswer}")
total_score = (score / 65) * 100
print("You answered " + str(score) + "/" + str(total_score) + " question correct.")
print("You have a score of " + str(total_score) + "%")
return input("Want to play again? (y/n): ") == "y".lower()
quiz()
quiz_file.close()
play_again = True
while play_again:
play_again = run_test()
Я не вижу, что я делаю неправильноон не работает с измененным кодом ниже.По сути, что я делаю не так?Я помещаю код в неправильное место, чтобы он не запускался?