Spaces:
Sleeping
Sleeping
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() | |
def index(): | |
return redirect(url_for('quiz_index')) | |
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")) | |
if __name__ == '__main__': | |
app.run(debug=True, port=7860) | |