SoseiShiki / outerElectronFl.py
OzoneAsai's picture
Update outerElectronFl.py
8651983 verified
raw
history blame
5.08 kB
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,
# 他の元素も追加可能
}
# 首都のデータを辞書に格納する
capitals = {
'アルバニア': 'ティラナ',
'アンドラ': 'アンドラ・ラ・ベリャ',
'オーストリア': 'ウィーン',
'ベラルーシ': 'ミンスク',
'ベルギー': 'ブリュッセル',
'ボスニア・ヘルツェゴビナ': 'サライェヴォ',
'ブルガリア': 'ソフィア',
'クロアチア': 'ザグレブ',
'チェコ': 'プラハ',
'デンマーク': 'コペンハーゲン',
'エストニア': 'タリン',
'フィンランド': 'ヘルシンキ',
'フランス': 'パリ',
'ドイツ': 'ベルリン',
'ギリシャ': 'アテネ',
'ハンガリー': 'ブダペスト',
'アイスランド': 'レイキャヴィーク',
'アイルランド': 'ダブリン',
'イタリア': 'ローマ',
'ラトビア': 'リガ',
'リヒテンシュタイン': 'ファドゥーツ',
'リトアニア': 'ヴィリニュス',
'ルクセンブルク': 'ルクセンブルク',
'マルタ': 'バレッタ',
'モルドバ': 'キシナウ',
'モナコ': 'モナコ',
'モンテネグロ': 'ポドゴリツァ',
'オランダ': 'アムステルダム',
'北マケドニア': 'スコピエ',
'ノルウェー': 'オスロ',
'ポーランド': 'ワルシャワ',
'ポルトガル': 'リスボン',
'ルーマニア': 'ブカレスト',
'ロシア': 'モスクワ',
'サンマリノ': 'サンマリノ',
'セルビア': 'ベオグラード',
'スロバキア': 'ブラチスラヴァ',
'スロベニア': 'リュブリャナ',
'スペイン': 'マドリード',
'スウェーデン': 'ストックホルム',
'スイス': 'ベルン',
'ウクライナ': 'キーウ',
'イギリス': 'ロンドン',
'バチカン': 'バチカン',
'アルメニア': 'エレバン',
'アゼルバイジャン': 'バクー',
'キプロス': 'ニコシア',
'ジョージア': 'トビリシ',
'イスラエル': 'エルサレム',
'カザフスタン': 'アスタナ',
'トルコ': 'アンカラ',
"エチオピア": "アディスアベバ",
}
# ランダムな国名とその首都を取得する関数
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 redirect(url_for('quiz_index'))
@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"))
if __name__ == '__main__':
app.run(debug=True, port=7860)