File size: 7,372 Bytes
8b41da9
 
 
 
 
 
17db4dd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8b41da9
 
8651983
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0e6f883
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8651983
 
 
 
 
 
 
 
 
 
 
7ab89b8
8651983
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8b41da9
 
 
0e6f883
8b41da9
 
0e6f883
8b41da9
 
 
 
 
 
8651983
8b41da9
8651983
8b41da9
8651983
 
8b41da9
 
8651983
8b41da9
6066cfe
 
 
 
17db4dd
6066cfe
 
 
17db4dd
6066cfe
 
 
 
 
 
 
 
 
 
 
17db4dd
6066cfe
 
8651983
fbd73fd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
from flask import Flask, render_template, request, session, redirect, url_for
import random

app = Flask(__name__)
app.secret_key = "your_secret_key_here"

element_atomic_numbers = {
    1: ['H', '水素 (Hydrogen)'],
    2: ['He', 'ヘリウム (Helium)'],
    3: ['Li', 'リチウム (Lithium)'],
    4: ['Be', 'ベリリウム (Beryllium)'],
    5: ['B', 'ホウ素 (Boron)'],
    6: ['C', '炭素 (Carbon)'],
    7: ['N', '窒素 (Nitrogen)'],
    8: ['O', '酸素 (Oxygen)'],
    9: ['F', 'フッ素 (Fluorine)'],
    10: ['Na', 'ナトリウム (Sodium)'],
    11: ['Al', 'アルミニウム (Aluminium)'],
    12: ['Si', 'ケイ素 (Silicon)'],
    13: ['P', 'リン (Phosphorus)'],
    14: ['S', '硫黄 (Sulfur)'],
    15: ['Cl', '塩素 (Chlorine)'],
    16: ['K', 'カリウム (Potassium)'],
    17: ['Ti', 'チタン (Titanium)'],
    18: ['Cr', 'クロム (Chromium)'],
    19: ['Mn', 'マンガン (Manganese)'],
    20: ['Fe', '鉄 (Iron)'],
    21: ['Cu', '銅 (Copper)'],
    22: ['Zn', '亜鉛 (Zinc)'],
    23: ['As', 'ヒ素 (Arsenic)'],
    24: ['Se', 'セレン (Selenium)'],
    25: ['Br', '臭素 (Bromine)'],
    26: ['Nb', 'ニオブ (Niobium)'],
    27: ['Mo', 'モリブデン (Molybdenum)'],
    28: ['Ag', '銀 (Silver)'],
    29: ['Sn', 'スズ (Tin)'],
    30: ['Sb', 'アンチモン (Antimony)']
}

# 首都のデータを辞書に格納する
capitals = {
    'アルバニア': 'ティラナ',
    'アンドラ': 'アンドラ・ラ・ベリャ',
    'オーストリア': 'ウィーン',
    'ベラルーシ': 'ミンスク',
    'ベルギー': 'ブリュッセル',
    'ボスニア・ヘルツェゴビナ': 'サライェヴォ',
    'ブルガリア': 'ソフィア',
    'クロアチア': 'ザグレブ',
    'チェコ': 'プラハ',
    'デンマーク': 'コペンハーゲン',
    'エストニア': 'タリン',
    'フィンランド': 'ヘルシンキ',
    'フランス': 'パリ',
    'ドイツ': 'ベルリン',
    'ギリシャ': 'アテネ',
    'ハンガリー': 'ブダペスト',
    'アイスランド': 'レイキャヴィーク',
    'アイルランド': 'ダブリン',
    'イタリア': 'ローマ',
    'ラトビア': 'リガ',
    'リヒテンシュタイン': 'ファドゥーツ',
    'リトアニア': 'ヴィリニュス',
    'ルクセンブルク': 'ルクセンブルク',
    'マルタ': 'バレッタ',
    'モルドバ': 'キシナウ',
    'モナコ': 'モナコ',
    'モンテネグロ': 'ポドゴリツァ',
    'オランダ': 'アムステルダム',
    '北マケドニア': 'スコピエ',
    'ノルウェー': 'オスロ',
    'ポーランド': 'ワルシャワ',
    'ポルトガル': 'リスボン',
    'ルーマニア': 'ブカレスト',
    'ロシア': 'モスクワ',
    'サンマリノ': 'サンマリノ',
    'セルビア': 'ベオグラード',
    'スロバキア': 'ブラチスラヴァ',
    'スロベニア': 'リュブリャナ',
    'スペイン': 'マドリード',
    'スウェーデン': 'ストックホルム',
    'スイス': 'ベルン',
    'ウクライナ': 'キーウ',
    'イギリス': 'ロンドン',
    'バチカン': 'バチカン',
    'アルメニア': 'エレバン',
    'アゼルバイジャン': 'バクー',
    'キプロス': 'ニコシア',
    'ジョージア': 'トビリシ',
    'イスラエル': 'エルサレム',
    'カザフスタン': 'アスタナ',
    'トルコ': 'アンカラ',
    "エチオピア": "アディスアベバ",
}
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,
    # 他の元素も追加可能
}

# ランダムな国名とその首都を取得する関数
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('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.values()))[1]
    
    if request.method == "POST":
        user_input = int(request.form["user_input"])
        correct_answer = [key for key, value in element_atomic_numbers.items() if value[1] == session["element"]][0]
        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=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")