Получить аргумент функции. Python
Есть такой код(см. ниже). Он создаёт 2 теста с разным набором верных ответов, вопросов, и самое важное - разными ответами(они появляются через messagebox). Нужно сделать так, чтобы были разные ответы по окончании тестов. Для первого - один набор, для второго - другой. Для первого я уже сделал с помощью переменной count. Для второго пытался прикрутить такой же набор с другими ответами и разным разбросом ответов по баллам.
В итоге решил, что нужно узнать, какой тест только что был пройден, и через if/ elifпо баллам расписать ответы. Но я не знаю, как это сделать, пробовал return, получил не то, что хотел.
Заранее спасибо.
import tkinter as tk
from tkinter import messagebox as mb
# Первым в кортеже идет название теста.
list_questions_1 = ("Приятно ли с Вами общаться ?", "1. Вы любите больше слушать, чем говорить?",
"2. Вы всегда можете найти тему для разговора даже с незнакомым человеком?",
"3. Вы всегда внимательно слушаете собеседника??", "4. Любите ли Вы давать советы?", "5. Если тема разговора Вам неинтересна, станете ли показывать это собеседнику?",
"6. Раздражаетесь ли Вы, когда Вас не слушают?", "7. У Вас есть собственное мнение по любому вопросу?", "8. Если тема разговора Вам незнакома, станете ли её развивать?",
"9. Вы любите быть центром внимания?", "10. Есть ли хотя бы три предмета, по которым Вы обладаете достаточно прочными знаниями?",
"11. Вы хороший оратор?")
list_questions_2 = ("Благоразумны ли Вы?", "1. Выходите ли Вы из себя по малейшему поводу?", "2. Боитесь ли Вы разозлить человека, который физически сильнее Вас?",
"3. Начинаете ли Вы скандалить, чтобы на Вас обратили внимание?", "4. Любите ли Вы ездить на большой скорости, даже если это связано с риском для жизни?", "5. Увлекаетесь ли Вы лекарствами, когда заболеваете?",
"6. Пойдёте ли Вы на всё, чтобы получить то, что вам хочется?", "7. Любите ли Вы сидеть часами на солнце?", "8. Уверены ли Вы, что когда-нибудь станете знаменитостью?",
"9. Умеете ли Вы вовремя остановиться, если чувствуете, что начинаете проигрывать?", "10. Привыкли ли Вы много есть, даже когда не голодны?",
"11. Любите ли Вы знать заранее, что Вам подарят?")
test_suite = (list_questions_1, list_questions_2)
# Списки ответов
list_answers_1 = ("yes", "yes", "yes", "yes", "yes", "yes", "yes", "yes", "yes", "yes", "yes")
list_answers_2 = ("no", "yes", "no", "no", "no", "no", "no", "no", "yes", "no", "no")
tuple_answer = (list_answers_1, list_answers_2)
# По нему можно рассчитывать результаты теста.
test_result = [0, 0]
ic = 0
i = 1
count = 0
result_text = " "
def result(answer, control, number, question, test):
""" Функция переключения вопросов и сбор результатов"""
global i
global count
global result_text
global ic
if answer == control[i - 1]:
test_result[0] += 1
count += 1
ic = count + 0
else:
test_result[1] += 1
count = ic
if i < len(control):
i += 1
number.config(text=f"Вопрос номер {i}")
question.config(text=f"{test[i]}")
else:
if (count>=0) and (count<=3):
result_text = (f"Ваш реузльтат {count} баллов. Вы либо молчун, либо настолько общительны, что вас избегают. ")
ic = 0
count = 0
elif (count>=4) and (count<=9):
result_text = (f"Ваш результат {count} баллов. Вы, может, и не слишком общительны, но почти всегда внимательны и приятны в беседе. ")
ic = 0
count = 0
elif (count>=10) and (count<=11):
result_text = (f"Ваш результат {count} баллов. Вы, наверное один из самых приятных в общении людей. Вряд ли друзья могут без Вас обойтись. ")
count = 0
ic = 0
mb.showinfo(title="Результаты теста", message=result_text)
i = 1
def test_fun(test_number):
""" Окно теста"""
global i
test = test_suite[test_number - 1]
control_answers = tuple_answer[test_number - 1]
test_win = tk.Toplevel()
test_win.title(f"Test {test[i - 1]}")
test_win.geometry('575x575+100+100')
question_number = tk.Label(test_win, text=f"Вопрос номер {i}", font="Arial 20", background="gray93",
justify="center")
question_number.place(relx=0, rely=0.3, relwidth=1, relheight=0.1)
text_question = tk.Label(test_win, text=f"{test[i]}", font="Arial 10", background="gray93",
justify="center")
text_question.place(relx=0, rely=0.4, relwidth=1, relheight=0.1)
yes = tk.Button(test_win, text="Да", background="gray90", font="Arial 16",
command=lambda: result('yes', control_answers, question_number, text_question, test))
no = tk.Button(test_win, text="Нет", background="gray90", font="Arial 16",
command=lambda: result('no', control_answers, question_number, text_question, test))
yes.place(relx=0.73, rely=0.7, relwidth=0.15, relheight=0.1)
no.place(relx=0.1, rely=0.7, relwidth=0.15, relheight=0.1)
def main():
""" Основное окно выбора теста"""
len_test1 = len(list_questions_1) - 1
len_test2 = len(list_questions_2) - 1
root = tk.Tk()
root.title("Психологический тест")
root.geometry('700x700+100+100')
choose_lab = tk.Label(root, text="Выберите тест", width=30, height=1, font="Arial 20", background="gray93")
choose_lab.place(x=100, y=1)
test2_but = tk.Button(root, text=f"Приятно ли с Вами общаться? \n Всего {len_test1} вопросов", width=30, height=2,
font="Arial 20",
background="gray90", command=lambda: test_fun(1))
test2_but.place(x=100, y=180)
test3_but = tk.Button(root, text=f"Благоразумны ли Вы? \n Всего {len_test2} вопроса", width=30, height=2,
font="Arial 20", background="gray90",
command=lambda: test_fun(2))
test3_but.place(x=100, y=380)
root.mainloop()
main()