from flask import Flask, render_template, request, session, redirect, url_for import random app = Flask(__name__) app.secret_key = "your_secret_key_here" # 元素と最外殻電子の数の辞書 element_outer_electrons: dict[str, int] = { "水素": 1, "ヘリウム": 2, "リチウム": 1, "ベリリウム": 2, "ホウ素": 3, "炭素": 4, "窒素": 5, "酸素": 6, "フッ素": 7, "アルゴン": 8, "クリプトン": 8, "キセノン": 8, "ナトリウム": 1, "マグネシウム": 2, "アルミニウム": 3, "ケイ素": 4, "リン": 5, "硫黄": 6, "塩素": 7, "カリウム": 1, "カルシウム": 2, # 他の元素も追加可能 } @app.route("/", methods=["GET", "POST"]) def quiz(): # セッションに元素がない場合はランダムに選択 if "element" not in session: session["element"] = random.choice(list(element_outer_electrons.keys())) if request.method == "POST": user_input = int(request.form["user_input"]) correct_answer = element_outer_electrons[session["element"]] if user_input == correct_answer: result = "正解です!" else: result = f"残念!正解は {correct_answer} でした。" return render_template("quiz.html", element=session["element"], result=result) return render_template("quiz.html", element=session["element"], result=None) @app.route("/next", methods=["POST"]) def next_question(): # 次の問題をセッションに設定し、リダイレクト session["element"] = random.choice(list(element_outer_electrons.keys())) return redirect(url_for("quiz")) if __name__ == "__main__": app.run(debug=True)