Форум сайта python.su
Делаю тест программу, нужно чтобы считал количество неправильно введённых ответов, но все время сбрасывает счетчик, может что-то забыл?
from tkinter import* from tkinter import messagebox root = Tk() root.title("Тест") root.geometry("710x150") err=0 ls = [ ("Вопрос 1", "1"), ] def ask_question(q, correct_answer): question = Label(root, font="14", text=q+"\n") answer = Entry(font="14") btn = Button(root, font="14", text="Ответить", command=lambda: check_answer(answer.get().lower(), correct_answer, question, err)) question.grid(row=0) question.place(width=705) answer.grid(row=1) answer.place(y=50, x=290, width=140) btn.grid(row=2) btn.place(y=85, x=315) def check_answer(answer, correct_answer, question, err): if answer.lower() == correct_answer: if len(ls) > 0: next_question, next_answer = ls.pop(0) ask_question(next_question, next_answer) question.config(text="") else: messagebox.showinfo("Молодец!", "Ты успешно выполнил тест!\n"+str(err)+" ошибок") exit(1) else: err+=1 messagebox.showerror("Неверно!", "Попробуй еще") return (err) question, answer = ls.pop(0) ask_question(question, answer) root.mainloop()
Отредактировано ask0ne (Март 14, 2021 17:11:08)
Офлайн
Да все у вас ок. Передаете значение глобальной переменной err в функцию. Это значение там увеличиваете и возвращаете.
Возвращаемый результат выбрасываете. Глобальная err надежно защищена от изменений! Вы нигде и не пытаетесь ее менять.
Офлайн