Starchik1 commited on
Commit
9ed4940
·
verified ·
1 Parent(s): 8850295

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +85 -0
app.py CHANGED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import random
3
+
4
+ def iq_test():
5
+ # Вопросы для теста
6
+ questions = [
7
+ {"category": "Логика", "question": "Какое из слов не связано с остальными: Кошка, Собака, Лиса, Книга?",
8
+ "options": ["Кошка", "Собака", "Лиса", "Книга"], "correct": 4},
9
+ {"category": "Логика", "question": "Если все яблоки красные, а все красные объекты круглые, то яблоки — это?",
10
+ "options": ["Квадратные", "Красные", "Круглые", "Круглые и красные"], "correct": 4},
11
+ {"category": "Математика", "question": "Какое число следует за рядом: 3, 6, 12, 24, ?",
12
+ "options": ["36", "48", "46", "30"], "correct": 2},
13
+ {"category": "Математика", "question": "Какое число является корнем квадратного уравнения x² - 16 = 0?",
14
+ "options": ["4", "8", "±4", "0"], "correct": 3},
15
+ {"category": "Последовательности", "question": "Найдите пропущенный символ: A, C, E, G, ?",
16
+ "options": ["H", "I", "J", "K"], "correct": 2},
17
+ {"category": "Последовательности", "question": "Какое число пропущено: 2, 4, 8, 16, ?",
18
+ "options": ["24", "28", "32", "40"], "correct": 3},
19
+ {"category": "Аналогии", "question": "Слон относится к млекопитающим, как воробей к:",
20
+ "options": ["Рыбам", "Млекопитающим", "Птицам", "Рептилиям"], "correct": 3},
21
+ {"category": "Аналогии", "question": "Дерево — лист: книга — ?",
22
+ "options": ["Обложка", "Страница", "Перо", "Ручка"], "correct": 2},
23
+ {"category": "Пространственное мышление", "question": "Если повернуть квадрат на 90°, то сколько углов он будет иметь?",
24
+ "options": ["4", "6", "8", "Количество не изменится"], "correct": 4},
25
+ {"category": "Пространственное мышление", "question": "Какая фигура лишняя: квадрат, круг, треугольник, куб?",
26
+ "options": ["Квадрат", "Круг", "Треугольник", "Куб"], "correct": 4}
27
+ ]
28
+
29
+ random.shuffle(questions) # Перемешиваем вопросы
30
+
31
+ # Переменные состояния
32
+ if "current_question" not in st.session_state:
33
+ st.session_state.current_question = 0
34
+ st.session_state.score = 0
35
+
36
+ # Получение текущего вопроса
37
+ if st.session_state.current_question < len(questions):
38
+ current_q = questions[st.session_state.current_question]
39
+
40
+ st.subheader(f"Категория: {current_q['category']}")
41
+ st.write(f"Вопрос {st.session_state.current_question + 1}: {current_q['question']}")
42
+
43
+ options = current_q["options"]
44
+ correct_answer = current_q["correct"]
45
+
46
+ # Формируем кнопки для выбора ответа
47
+ for i, option in enumerate(options, 1):
48
+ if st.button(option, key=f"q{st.session_state.current_question}_opt{i}"):
49
+ if i == correct_answer:
50
+ st.success("Правильно!")
51
+ st.session_state.score += 1
52
+ else:
53
+ st.error(f"Неправильно. Правильный ответ: {options[correct_answer - 1]}")
54
+
55
+ st.session_state.current_question += 1
56
+ st.experimental_rerun() # Перезагрузка страницы для следующего вопроса
57
+ else:
58
+ # Вывод результата
59
+ st.header("Тест завершен!")
60
+ st.write(f"Вы набрали {st.session_state.score} из {len(questions)} баллов.")
61
+
62
+ iq_score = 80 + (st.session_state.score / len(questions)) * 60
63
+ st.write(f"Ваш расчетный IQ: {int(iq_score)}.")
64
+
65
+ # Интерпретация IQ
66
+ if iq_score >= 140:
67
+ st.success("Ваш уровень интеллекта: Гений!")
68
+ elif 120 <= iq_score < 140:
69
+ st.success("Ваш уровень интеллекта: Очень высокий!")
70
+ elif 100 <= iq_score < 120:
71
+ st.info("Ваш уровень интеллекта: Средний.")
72
+ elif 80 <= iq_score < 100:
73
+ st.warning("Ваш уровень интеллекта: Ниже среднего.")
74
+ else:
75
+ st.error("Результат низкий. Продолжайте тренироваться!")
76
+
77
+ # Сбросить тест
78
+ if st.button("Пройти тест заново"):
79
+ st.session_state.current_question = 0
80
+ st.session_state.score = 0
81
+ st.experimental_rerun()
82
+
83
+ if __name__ == "__main__":
84
+ st.title("IQ тест")
85
+ iq_test()