Найти - Пользователи
Полная версия: Помогите найти ошибку или дописать код
Начало » Python для новичков » Помогите найти ошибку или дописать код
1
Light3JIbqp
Есть файл “file.txt” в нем содержится:
———————————————————-
Рождество/
Кто родился 7 января?/
1 - Король
2 - Зебра
3 - Иисус
4 - Сапог
3
Да правельный ответ 3 - Иисус, именно он родился 7 января.
———————————————————–
Программа должна работать так
Появляется тема (т.е первая строка из file.txt “Рождество”)
Затем вопрос (вторая строка из file.txt)
Появляются 4 варианта ответа
Правельный ответ указан 7 строкой(т.е 3)
Если пользователь ответил правельно появляется комментарий(т.е последняя строка)

Вот код
#Читает из текстого дукумента
import sys
def open_file(file):
    try:
        x = open("file.txt", "r")
    except IOError as e:
        print("Файла с именем file.txt нету", e)
        input("Нажмите Enter чтобы выйти.")
        sys.exit()
    else:
        return x
def next_line(x):
    line = x.readline()
    line = line.replace("/", "\n")
    return line
def next_block(x):
    subject = next_line(x)
    question = next_line(x)
    answer1 = next_line(x)
    answer2 = next_line(x)
    answer3 = next_line(x)
    answer4 = next_line(x)
    true_answer = next_line(x)
    commentary = next_line(x)
    return subject, question, answer1, answer2, answer3, answer4, true_answer, commentary
def welcome(subject):
    print("Добро пожаловать в игру Викторина")
    print("Вот тема: ", subject)
    
    
def true_question(question):
    print("Вопрос: ", question)
    
    
def answers(answer1, answer2, answer3, answer4):
    print("Варианты ответов")
    for i in (answer1, answer2, answer3, answer4):
        print(i)
        
    
def commentarys(commentary):
    print(commentary)
def main(subject, question, answer1, answer2, answer3, answer4):
    welcome(subject)
    true_question(question)
    answers(answer1, answer2, answer3, answer4)
    
    
    
main(subject, question, answer1, answer2, answer3, answer4)
otwet = None
while otwet:
    otwet = input("Введите ответ: ")
    if otwet == true_answer:
        print("Правельно")
        commentarys(commentary)
        input("Нажмите Enter чтобы выйти.")
        break
    else:
        print("Нет")

Проблема в том что я с функциями намудрил


dimy44
Цикл while otwet у вас ни разу не выполнится.
Hello_world
Light3JIbqp
Помогите найти ошибку
В ошибках что пишет? У функций свои пространства имен, если переменная не объявлена глобальной, верно?
Light3JIbqp
Hello_world
main(subject, question, answer1, answer2, answer3, answer4)
NameError: name ‘subject’ is not defined
Пишет
Исправить как я не знаю :) инструкцией global? тогда как?
4kpt
Что делает эта строчка???
main(subject, question, answer1, answer2, answer3, answer4)
Она создает объект который возвращает функция с параметрами subject, question, answer1, answer2, answer3, answer4.
Эти параметры уже должны быть определены в программе заранее.
Где они определены у Вас?
Вот он и пишет ошибку…
dimy44
Код настолько ужасен, что советую Вам собраться с мыслями и переписать с нуля все. Функция next_block вообще нигде не вызывается ни разу, def commentarys это вообще нелепо… Насчет имен Вам уже сказали. Без обид.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB