Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Python помощь в исправлении ошибок, очень нужна помощь!

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  
import random 
import tkinter as tk 
 
class Trainer: 
    def __init__(self): 
        self.score = 0 
        self.tasks = ["Задача 1", "Задача 2", "Задача 3", "Задача 4", "Задача 5"] 
        self.task_description = { 
            "Задача 1": "Напишите программу, которая выводит на экран 'Hello, world!'", 
            "Задача 2": "Напишите программу, которая считает сумму двух чисел", 
            "Задача 3": "Напишите программу, которая находит среднее арифметическое двух чисел", 
            "Задача 4": "Напишите программу, которая находит площадь прямоугольника", 
            "Задача 5": "Напишите программу, которая находит корни квадратного уравнения" 
        } 
        self.task_solutions = { 
            "Задача 1": "print('Hello, world!')", 
            "Задача 2": "print(a + b)", 
            "Задача 3": "print((a + b) / 2)", 
            "Задача 4": "print(a * b)", 
            "Задача 5": "import math\nprint('x1 =', x1)\nprint('x2 =', x2)" 
        } 
 
    def run(self): 
        # Создание графического интерфейса 
        root = tk.Tk() 
        root.title("Тренажер") 
        root.geometry("400x300") 
 
        # Создание виджетов 
        task_label = tk.Label(root, text="Задача:") 
        task_description_label = tk.Label(root, text="") 
        solution_label = tk.Label(root, text="Решение:") 
        solution_entry = tk.Entry(root) 
        score_label = tk.Label(root, text="Счет: 0") 
        next_button = tk.Button(root, text="Следующая задача", command=self.next_task) 
        quit_button = tk.Button(root, text="Завершить тренировку", command=root.quit) 
 
        # Размещение виджетов на форме 
        task_label.pack() 
        task_description_label.pack() 
        solution_label.pack() 
        solution_entry.pack() 
        score_label.pack() 
        next_button.pack() 
        quit_button.pack() 
 
        # Запуск главного цикла 
        self.root = root 
        self.next_task() 
        root.mainloop() 
 
    def next_task(self): 
        # Выбор случайной задачи 
        self.current_task = random.choice(self.tasks) 
 
        # Обновление описания задачи на форме 
        self.task_description_label.config(text=self.task_description[self.current_task]) 
 
        # Очистка поля ввода решения 
        self.solution_entry.delete(0, tk.END) 
 
    def check_solution(self): 
        # Получение решения задачи из поля ввода 
        solution = self.solution_entry.get() 
 
        # Проверка решения задачи 
        if solution == self.task_solutions[self.current_task]: 
            self.score += 1 
            self.score_label.config(text="Счет: {}".format(self.score)) 
            tk.messagebox.showinfo("Результат", "Верно!") 
        else: 
            tk.messagebox.showerror("Результат", "Неверно!") 
 
    def quit(self): 
        self.root.quit() 
 
trainer = Trainer() 
trainer.run() 
 
По дате
По рейтингу
Аватар пользователя
Новичок

Здравствуйте!
Вот, изменил немного:

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
 import random  
import tkinter as tk  
  
class Trainer:  
    def __init__(self):  
        self.score = 0  
        self.tasks = ["Задача 1", "Задача 2", "Задача 3", "Задача 4", "Задача 5"]  
        self.task_description = {  
            "Задача 1": "Напишите программу, которая выводит на экран 'Hello, world!'",  
            "Задача 2": "Напишите программу, которая считает сумму двух чисел",  
            "Задача 3": "Напишите программу, которая находит среднее арифметическое двух чисел",  
            "Задача 4": "Напишите программу, которая находит площадь прямоугольника",  
            "Задача 5": "Напишите программу, которая находит корни квадратного уравнения"  
        }  
        self.task_solutions = {  
            "Задача 1": "print('Hello, world!')",  
            "Задача 2": "print(a + b)",  
            "Задача 3": "print((a + b) / 2)",  
            "Задача 4": "print(a * b)",  
            "Задача 5": "import math\nprint('x1 =', x1)\nprint('x2 =', x2)"  
        }  
  
    def run(self):  
        # Создание графического интерфейса  
        root = tk.Tk()  
        root.title("Тренажер")  
        root.geometry("400x300")  
  
        # Создание виджетов  
        task_label = tk.Label(root, text="Задача:")  
        task_description_label = tk.Label(root, text="")  
        solution_label = tk.Label(root, text="Решение:")  
        solution_entry = tk.Entry(root)  
        score_label = tk.Label(root, text="Счет: 0")  
        next_button = tk.Button(root, text="Следующая задача", command=self.next_task)  
        quit_button = tk.Button(root, text="Завершить тренировку", command=root.quit)  
  
        # Размещение виджетов на форме  
        task_label.pack()  
        task_description_label.pack() 
 
 
        # +++ Добавил поля в self 
        self.task_description_label = task_description_label 
        self.solution_entry = solution_entry 
        # --- 
 
 
        solution_label.pack()  
        solution_entry.pack()  
        score_label.pack()  
        next_button.pack()  
        quit_button.pack()  
  
        # Запуск главного цикла  
        self.root = root  
        self.next_task()  
        root.mainloop()  
  
    def next_task(self):  
        # Выбор случайной задачи  
        self.current_task = random.choice(self.tasks)  
  
        # Обновление описания задачи на форме  
        self.task_description_label.config(text=self.task_description[self.current_task])  
  
        # Очистка поля ввода решения  
        self.solution_entry.delete(0, tk.END)  
  
    def check_solution(self):  
        # Получение решения задачи из поля ввода  
        solution = self.solution_entry.get()  
  
        # Проверка решения задачи  
        if solution == self.task_solutions[self.current_task]:  
            self.score += 1  
            self.score_label.config(text="Счет: {}".format(self.score))  
            tk.messagebox.showinfo("Результат", "Верно!")  
        else:  
            tk.messagebox.showerror("Результат", "Неверно!")  
  
    def quit(self):  
        self.root.quit()  
  
trainer = Trainer()  
trainer.run() 
 
Аватар пользователя

В коде содержится несколько ошибок, я помогу их исправить:

Ошибка в методе next_task. Убедитесь, что вы добавили аргумент self к task_description_label и solution_entry, чтобы можно было получить доступ к ним в других методах.

Ошибка в методе check_solution. Вместо tk.messagebox.showinfo и tk.messagebox.showerror нужно использовать tk.messagebox.showinfo и tk.messagebox.showerror.

Ошибка в методе quit. Вы используете self.root.quit(), но не определяете self.root. Вместо этого можно использовать self.root.destroy(), чтобы закрыть главное окно.

Аватар пользователя
Знаток

Он тебе пишет:

Объект Trainer не содержит task_description_label