Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/29: Рейтинг темы: голосов - 29, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 19.07.2019
Сообщений: 2

Майкл Доусон. Викторина

01.12.2019, 18:24. Показов 6203. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Изучаю Python по учебнику Доусона и столкнулся с проблемой: "local variable 'explanation' referenced before assignment". Гуглеж не помог, по этому обращаюсь к вам.
Код программы:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
def open_file(file_name, mode):
    try:
        the_file = open(file_name, mode, encoding = 'utf-8')
    except IOError as e:
        print("Невозможно открыть файл. ", file_name, ". Работа программы будет завершена.\n", e)
        input("\n\nНажмите любую клавишу")
        sys.exit()
    else:
        return the_file
 
def next_line(the_file):
    line = the_file.readline()
    line = line.replace("/", "\n")
    return line
 
def next_block(the_file):
    category = next_line(the_file)
    question = next_line(the_file)
    answers = []
    for _ in range(4):
        answers.append(next_line(the_file))
    correct = next_line(the_file)
    if correct:
        correct = correct[0]
        explanation = next_line(the_file)
    return category, question, answers, correct, explanation
 
def welcome(title):
    print("Добро пожаловать в игру 'Викторина'!\n")
    print("\t\t" + title + "\n")
 
def main():
    trivia_file = open_file("D:\\py\\g7\\tr.txt", "r")
    title = next_line(trivia_file)
    welcome(title)
    #test(trivia_file)
    score = 0
    category, question, answers, correct, explanation = next_block(trivia_file)
    while category:
        print(category)
        print(question)
        for i in range(4):
            print("\t", i + 1, " - ", answers[i])
        answer = input("Ваш ответ: ")
        if answer == correct:
            print("\nДа!", end = " ")
            score += 1
        else:
            print("\nНет.", end = " ")
            print(explanation)
            print("Счет: ", score, "\n\n")
            category, question, answers, correct, explanation = next_block(trivia_file)
    trivia_file.close()
    print("Это был последний вопрос!")
    print("Вы заработали", score, " очков!")
 
main()
input("Нажмите Enter, чтобы выйти.")
Ошибка: Traceback (most recent call last):
File "d:/py/g7/7.py", line 65, in <module>
main()
File "d:/py/g7/7.py", line 60, in main
category, question, answers, correct, explanation = next_block(trivia_file)
File "d:/py/g7/7.py", line 34, in next_block
return category, question, answers, correct, explanation
UnboundLocalError: local variable 'explanation' referenced before assignment
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.12.2019, 18:24
Ответы с готовыми решениями:

Майкл Доусон. Глава 7. Викторина
Здравствуйте. Недавно программирую. Начал с книги Майкла Доусона. Возникла проблема с доработкой программы #Booch 22.07.2020 ...

Игра анаграммы. Майкл Доусон "Программируем на Python". Глава 9
Добрый день, друзья! Продолжаю решать задачи из этого учебника. Возник вопрос по 4ой задаче из этой главы: Создайте несложную...

Игра анаграммы. Майкл Доусон "Программируем на Python". Глава 4
Добрый день! Задача: доработать игру &quot;Анаграммы&quot; из указанного учебника так, чтобы к каждому слову полагалась подсказка. Игрок должен...

2
 Аватар для Semen-Semenich
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,291
01.12.2019, 18:48
Лучший ответ Сообщение было отмечено CaS1703 как решение

Решение

помогает гугл переводчик
локальная переменная «объяснение» обращаться до присвоения

Python
1
2
3
4
5
6
7
8
9
10
11
def next_block(the_file):
    category = next_line(the_file)
    question = next_line(the_file)
    answers = []
    for _ in range(4):
        answers.append(next_line(the_file))
    correct = next_line(the_file)
    if correct: # если истина
        correct = correct[0]
        explanation = next_line(the_file) # то объявляем explanation и присваиваем значение
    return category, question, answers, correct, explanation # как вернуть не объявленную explanation если выше условие ложь?
1
0 / 0 / 0
Регистрация: 19.07.2019
Сообщений: 2
01.12.2019, 18:53  [ТС]
Спасибо за помощь! Буду внимательнее)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.12.2019, 18:53
Помогаю со студенческими работами здесь

Игра "Зооферма". Майкл Доусон "Программируем на Python". Глава 8
Всем доброго времени суток! Задача: Напишите программу «Зооферма», в которой будет создано несколько объектов класса Critter, а...

Работа с файлами. (Майкл Доусон)
Всем привет. Столкнулся с маленькой проблемой. Изучаю книгу Майкла Доусона &quot;Программирование на Python&quot; Остановился на 7 главе. Там...

Какую книгу лучше читать после "Майкл Доусон.Программируем на Python"?
Какая книга подходит для прочтения новичком после &quot;Майкл Доусон.Программируем на Python&quot;?

Python М.Доусон
Вообщем, тут такое дело, изучаю Пайтон по Доусону и там есть задача с такими условиями : &quot;А вот задача посложнее. Напишите на...

Куплю книгу "Программируем на Python" Майкл Доусон
Санкт-Петербург; Программируем на Python (Python Programming for the Absolute Beginner) Майкл Доусон; Только на русском.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru