Я создаю графический интерфейс, используя tkinter. По сути, программа будет использоваться для расчета (своего рода) общего балла.
Ввод пользователя:
[*] Возраст (виджет ввода) – в настоящее время он преобразуется в возраст в днях (например, 4591 день).
[*]Необработанные результаты различных тестов (виджет ввода)
Вот суть:
Необработанные оценки необходимо преобразовать в другой тип оценок, основанный на возрасте пользователей (с использованием расширенных норм тестирования).< /p>
Ниже я составил макет словаря моих тестовых норм. Проблема в том, что я не могу понять, как получить правильное значение на основе (1) возраста пользователей и (2) их исходных результатов в различных тестах.
Желаемый результат:
Так, например, если пользовательский ввод:
Возраст участников = 4031 день
Необработанный балл (test1) = 8
Желаемый результат должен быть: 2
Как видите, сначала мне нужно найти правильный словарь в зависимости от возраста диапазон, в который попадает возраст пользователей. Тогда мне нужно найти правильный тест. И, наконец, мне нужно получить правильное значение, исходя из того, попадает ли исходный показатель (1) в определенный диапазон ключей или (2) соответствует ли он однозначному ключу.
I подозреваю, что проблема в том, что я попеременно использую диапазоны и однозначные цифры для ключей.
Вопрос 1: Как мне получить правильное значение из моих тестовых норм словарь, основанный на возрасте и исходных баллах по определенному тесту?
Вопрос 2: Есть ли лучший способ структурировать мои тестовые нормы?Если я попробую, например:
x = test_norms[4029]["Test1"][2]
print(x)
Я понимаю:
Cell In[79], line 32
x = test_norms[4029]["Test1"][2]
KeyError: 4029
Однако, если я заменю все «ключи диапазона» отдельными цифрами или строками, я смогу без проблем получить значения.
Спасибо. вперед!
Вот нормы теста:
def range1(start, end):
return range(start, end+1)
test_norms = {
range(3982, 5921): { # If age (in days) falls within this range - use this dictionary
"Test1": {
range1(0, 3): 1, # Retrieve the value 1 if the raw test score (the keys) is 0, 1, 2 or 3
range1(4, 9): 2,
range1(10, 15): 3,
range1(16, 20): 4,
21: 5,
22:6
},
"Test2": {
range1(0, 3): 1,
range1(4, 9): 2,
range1(9, 10): 3,
range1(11, 13): 4
}
},
range(5921, 7325): { # If age (in days) falls within this range - use this dictionary
"Test1": {
range1(0, 3): 1,
range1(4, 9): 2,
range1(10, 15): 3,
range1(16, 20): 4,
range1(21, 27): 5
},
"Test2": {
range1(0, 3): 1,
range1(4, 9): 2,
range1(9, 10): 3,
11: 4,
12:5,
range1(13-15): 6
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/783 ... es-as-keys