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