


Программирование
+4Python помощь в исправлении ошибок, очень нужна помощь!
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