Spaces:
Sleeping
Sleeping
| from flask import Flask, render_template, request, session, redirect, url_for | |
| import json | |
| import random | |
| app = Flask(__name__) | |
| app.secret_key = "your_secret_key_here" | |
| # JSONファイルから元素と原子番号の対応関係を読み込む | |
| with open("element_atomic_numbers.json", "r", encoding="utf-8") as f: | |
| element_atomic_numbers = json.load(f) | |
| # JSONファイルから首都のデータを読み込む | |
| with open("capitals.json", "r", encoding="utf-8") as f: | |
| capitals = json.load(f) | |
| # element_outer_electrons | |
| with open("element_outer_electrons.json", "r", encoding="utf-8") as f: | |
| element_outer_electrons = json.load(f) | |
| # ランダムな国名とその首都を取得する関数 | |
| def get_random_country(): | |
| country = random.choice(list(capitals.keys())) | |
| return country, capitals[country] | |
| # 初期の問題を設定する | |
| current_country, current_capital = get_random_country() | |
| def index(): | |
| return render_template('quiz_index.html') | |
| def quiz_capital(): | |
| global current_country, current_capital | |
| result = None | |
| if request.method == 'POST': | |
| user_input = request.form['user_input'] | |
| if user_input == current_capital: | |
| result = '正解です!' | |
| else: | |
| result = '不正解です。正解は{}です。'.format(current_capital) | |
| return render_template('quiz_capital.html', element=current_country, result=result) | |
| def next_question_capital(): | |
| global current_country, current_capital | |
| current_country, current_capital = get_random_country() | |
| return redirect(url_for('quiz_capital')) | |
| def quiz_element(): | |
| # セッションに元素がない場合はランダムに選択 | |
| 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_element.html", element=session["element"], result=result) | |
| return render_template("quiz_element.html", element=session["element"], result=None) | |
| def next_question_element(): | |
| # 次の問題をセッションに設定し、リダイレクト | |
| session["element"] = random.choice(list(element_outer_electrons.keys())) | |
| return redirect(url_for("quiz_element")) | |
| def quiz_element2num(): | |
| # セッションに元素がない場合はランダムに選択 | |
| if "element" not in session: | |
| session["element"] = random.choice(list(element_atomic_numbers.keys())) | |
| if request.method == "POST": | |
| user_input = request.form["user_input"] | |
| correct_answer = [key for key, value in element_atomic_numbers.items() if value == session["element"]] | |
| if correct_answer: | |
| correct_answer = correct_answer[0] | |
| else: | |
| # Handle the case where no correct answer is found | |
| correct_answer = "No matching element found" | |
| if user_input == correct_answer: | |
| result = "正解です!" | |
| else: | |
| result = f"残念!正解は {correct_answer} でした。" | |
| return render_template("quiz_element2num.html", element=session["element"], result=result) | |
| return render_template("quiz_element2num.html", element=element_atomic_numbers[session["element"]], result=None) | |
| def next_question_element2num(): | |
| # 次の問題をセッションに設定し、リダイレクト | |
| session["element"] = random.choice(list(element_atomic_numbers.values()))[1] | |
| return redirect(url_for("quiz_element2num")) | |
| if __name__ == '__main__': | |
| app.run(debug=True, port=7860, host="0.0.0.0") | |