testSpace1 / outerElectronFl.py
OzoneAsai's picture
Upload outerElectronFl.py
b18cdce verified
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()
@app.route('/')
def index():
return render_template('quiz_index.html')
@app.route('/quiz_capital', methods=['GET', 'POST'])
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)
@app.route('/next_capital', methods=['POST'])
def next_question_capital():
global current_country, current_capital
current_country, current_capital = get_random_country()
return redirect(url_for('quiz_capital'))
@app.route('/quiz_element', methods=['GET', 'POST'])
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)
@app.route("/next_element", methods=["POST"])
def next_question_element():
# 次の問題をセッションに設定し、リダイレクト
session["element"] = random.choice(list(element_outer_electrons.keys()))
return redirect(url_for("quiz_element"))
@app.route('/quiz_element2num', methods=['GET', 'POST'])
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)
@app.route("/next_element2num", methods=["POST"])
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")