Вопрос Flask Framework – как отображать правильные ответы в викторине ⇐ Python
Вопрос Flask Framework – как отображать правильные ответы в викторине
Я только учусь использовать Flask:
У меня есть этот код для простой игры в угадайку (викторины), и в HTML-коде обзора, где пользователь видит свой ответ и правильный, его ответ (написанный «как ваш ответ» не отображается, а только правильный ответ) .
Вот мой файл app.py с маршрутами. Маршрут с проблемой — это тот, который говорит @app.route('/ответ', методы=['POST']). Пожалуйста, помогите, если можете!
из фляги import Flask, render_template, request, redirect, url_for приложение = Колба(__name__) # Определите простые вопросы и ответы вопросы = [ { 'вопрос': 'Какая столица Франции?', 'варианты': ['Берлин', 'Мадрид', 'Париж', 'Рим'], 'correct_answer': 'Париж', 'сообщение': '', }, { 'вопрос': 'Какая планета известна как Красная планета?', 'варианты': ['Марс', 'Венера', 'Юпитер', 'Сатурн'], 'correct_answer': 'Марс', 'сообщение': '', }, { 'вопрос': 'Какое млекопитающее самое большое в мире?', 'варианты': ['Слон', 'Жираф', 'Китовая акула', 'Кенгуру'], 'correct_answer': 'Китовая акула', 'сообщение': '', }, ] # Инициализируйте переменные, чтобы отслеживать текущий вопрос и оценку пользователя. текущий_вопрос = 0 оценка = 0 защита reset_messages(): на вопрос в вопросах: вопрос['сообщение'] = '' @app.route('/') индекс защиты(): сброс_сообщений() если текущий_вопрос < len(вопросы): return render_template('question.html', вопрос=questions[current_question]) еще: return render_template('result.html', счет=оценка, итог=лен(вопросы), вопросы=вопросы) @app.route('/ответ', методы=['POST']) Защитный ответ(): глобальный текущий_вопрос, оценка user_answer = request.form.get('ответ') правильный_ответ = вопросы[текущий_вопрос]['правильный_ответ'] если user_ответ == правильный_ответ: оценка += 1 еще: вопросы[current_question]['message'] = user_answer # Установите здесь ответ пользователя текущий_вопрос += 1 если текущий_вопрос < len(вопросы): вернуть перенаправление (url_for ('index')) еще: # Убедитесь, что оценка не превышает общее количество вопросов Оценка = мин(оценка, длина(вопросы)) # Сброс текущего_вопроса на 0 для проверки текущий_вопрос = 0 return redirect(url_for('обзор', оценка=оценка, итог=len(вопросы))) @app.route('/play-again', методы=['POST']) защита play_again(): глобальный текущий_вопрос, оценка текущий_вопрос = 0 оценка = 0 вернуть перенаправление (url_for ('index')) @app.route('/обзор') обзор проверки(): return render_template('review.html', вопросы=вопросы, оценка=оценка, итог=len(вопросы)) @app.route('/quit', методы=['POST']) защита quit_game(): return «Спасибо за игру!» если __name__ == '__main__': app.run(отладка=Истина) ниже обзор, html
Просмотреть ответы Просмотреть ответы Ваша оценка: {{ балл }} из {{ всего }}
{% за вопрос в вопросах %} {{ вопрос['вопрос'] }}
{% if вопрос['сообщение'] == 'Верно!' %} Правильный ответ: {{ вопрос['correct_answer'] }} (Правильно) {% еще %} Ваш ответ: {{ вопрос['сообщение'] }}
Правильный ответ: {{ вопрос['correct_answer'] }} {% endif %}
{% конец для %} Вернуться на главную страницу
Я только учусь использовать Flask:
У меня есть этот код для простой игры в угадайку (викторины), и в HTML-коде обзора, где пользователь видит свой ответ и правильный, его ответ (написанный «как ваш ответ» не отображается, а только правильный ответ) .
Вот мой файл app.py с маршрутами. Маршрут с проблемой — это тот, который говорит @app.route('/ответ', методы=['POST']). Пожалуйста, помогите, если можете!
из фляги import Flask, render_template, request, redirect, url_for приложение = Колба(__name__) # Определите простые вопросы и ответы вопросы = [ { 'вопрос': 'Какая столица Франции?', 'варианты': ['Берлин', 'Мадрид', 'Париж', 'Рим'], 'correct_answer': 'Париж', 'сообщение': '', }, { 'вопрос': 'Какая планета известна как Красная планета?', 'варианты': ['Марс', 'Венера', 'Юпитер', 'Сатурн'], 'correct_answer': 'Марс', 'сообщение': '', }, { 'вопрос': 'Какое млекопитающее самое большое в мире?', 'варианты': ['Слон', 'Жираф', 'Китовая акула', 'Кенгуру'], 'correct_answer': 'Китовая акула', 'сообщение': '', }, ] # Инициализируйте переменные, чтобы отслеживать текущий вопрос и оценку пользователя. текущий_вопрос = 0 оценка = 0 защита reset_messages(): на вопрос в вопросах: вопрос['сообщение'] = '' @app.route('/') индекс защиты(): сброс_сообщений() если текущий_вопрос < len(вопросы): return render_template('question.html', вопрос=questions[current_question]) еще: return render_template('result.html', счет=оценка, итог=лен(вопросы), вопросы=вопросы) @app.route('/ответ', методы=['POST']) Защитный ответ(): глобальный текущий_вопрос, оценка user_answer = request.form.get('ответ') правильный_ответ = вопросы[текущий_вопрос]['правильный_ответ'] если user_ответ == правильный_ответ: оценка += 1 еще: вопросы[current_question]['message'] = user_answer # Установите здесь ответ пользователя текущий_вопрос += 1 если текущий_вопрос < len(вопросы): вернуть перенаправление (url_for ('index')) еще: # Убедитесь, что оценка не превышает общее количество вопросов Оценка = мин(оценка, длина(вопросы)) # Сброс текущего_вопроса на 0 для проверки текущий_вопрос = 0 return redirect(url_for('обзор', оценка=оценка, итог=len(вопросы))) @app.route('/play-again', методы=['POST']) защита play_again(): глобальный текущий_вопрос, оценка текущий_вопрос = 0 оценка = 0 вернуть перенаправление (url_for ('index')) @app.route('/обзор') обзор проверки(): return render_template('review.html', вопросы=вопросы, оценка=оценка, итог=len(вопросы)) @app.route('/quit', методы=['POST']) защита quit_game(): return «Спасибо за игру!» если __name__ == '__main__': app.run(отладка=Истина) ниже обзор, html
Просмотреть ответы Просмотреть ответы Ваша оценка: {{ балл }} из {{ всего }}
{% за вопрос в вопросах %} {{ вопрос['вопрос'] }}
{% if вопрос['сообщение'] == 'Верно!' %} Правильный ответ: {{ вопрос['correct_answer'] }} (Правильно) {% еще %} Ваш ответ: {{ вопрос['сообщение'] }}
Правильный ответ: {{ вопрос['correct_answer'] }} {% endif %}
{% конец для %} Вернуться на главную страницу
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение