Spaces:
Running
Running
Update outerElectronFl.py
Browse files- outerElectronFl.py +10 -153
outerElectronFl.py
CHANGED
@@ -4,94 +4,7 @@ import random
|
|
4 |
app = Flask(__name__)
|
5 |
app.secret_key = "your_secret_key_here"
|
6 |
|
7 |
-
|
8 |
-
1: ['H', '水素 (Hydrogen)'],
|
9 |
-
2: ['He', 'ヘリウム (Helium)'],
|
10 |
-
3: ['Li', 'リチウム (Lithium)'],
|
11 |
-
4: ['Be', 'ベリリウム (Beryllium)'],
|
12 |
-
5: ['B', 'ホウ素 (Boron)'],
|
13 |
-
6: ['C', '炭素 (Carbon)'],
|
14 |
-
7: ['N', '窒素 (Nitrogen)'],
|
15 |
-
8: ['O', '酸素 (Oxygen)'],
|
16 |
-
9: ['F', 'フッ素 (Fluorine)'],
|
17 |
-
10: ['Na', 'ナトリウム (Sodium)'],
|
18 |
-
11: ['Al', 'アルミニウム (Aluminium)'],
|
19 |
-
12: ['Si', 'ケイ素 (Silicon)'],
|
20 |
-
13: ['P', 'リン (Phosphorus)'],
|
21 |
-
14: ['S', '硫黄 (Sulfur)'],
|
22 |
-
15: ['Cl', '塩素 (Chlorine)'],
|
23 |
-
16: ['K', 'カリウム (Potassium)'],
|
24 |
-
17: ['Ti', 'チタン (Titanium)'],
|
25 |
-
18: ['Cr', 'クロム (Chromium)'],
|
26 |
-
19: ['Mn', 'マンガン (Manganese)'],
|
27 |
-
20: ['Fe', '鉄 (Iron)'],
|
28 |
-
21: ['Cu', '銅 (Copper)'],
|
29 |
-
22: ['Zn', '亜鉛 (Zinc)'],
|
30 |
-
23: ['As', 'ヒ素 (Arsenic)'],
|
31 |
-
24: ['Se', 'セレン (Selenium)'],
|
32 |
-
25: ['Br', '臭素 (Bromine)'],
|
33 |
-
26: ['Nb', 'ニオブ (Niobium)'],
|
34 |
-
27: ['Mo', 'モリブデン (Molybdenum)'],
|
35 |
-
28: ['Ag', '銀 (Silver)'],
|
36 |
-
29: ['Sn', 'スズ (Tin)'],
|
37 |
-
30: ['Sb', 'アンチモン (Antimony)']
|
38 |
-
}
|
39 |
-
|
40 |
-
# 首都のデータを辞書に格納する
|
41 |
-
capitals = {
|
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 |
element_outer_electrons: dict[str, int] = {
|
96 |
"水素": 1,
|
97 |
"ヘリウム": 2,
|
@@ -117,41 +30,8 @@ element_outer_electrons: dict[str, int] = {
|
|
117 |
# 他の元素も追加可能
|
118 |
}
|
119 |
|
120 |
-
|
121 |
-
def
|
122 |
-
country = random.choice(list(capitals.keys()))
|
123 |
-
return country, capitals[country]
|
124 |
-
|
125 |
-
# 初期の問題を設定する
|
126 |
-
current_country, current_capital = get_random_country()
|
127 |
-
|
128 |
-
@app.route('/')
|
129 |
-
def index():
|
130 |
-
return render_template('quiz_index')
|
131 |
-
|
132 |
-
@app.route('/quiz_capital', methods=['GET', 'POST'])
|
133 |
-
def quiz_capital():
|
134 |
-
global current_country, current_capital
|
135 |
-
|
136 |
-
result = None
|
137 |
-
|
138 |
-
if request.method == 'POST':
|
139 |
-
user_input = request.form['user_input']
|
140 |
-
if user_input == current_capital:
|
141 |
-
result = '正解です!'
|
142 |
-
else:
|
143 |
-
result = '不正解です。正解は{}です。'.format(current_capital)
|
144 |
-
|
145 |
-
return render_template('quiz_capital.html', element=current_country, result=result)
|
146 |
-
|
147 |
-
@app.route('/next_capital', methods=['POST'])
|
148 |
-
def next_question_capital():
|
149 |
-
global current_country, current_capital
|
150 |
-
current_country, current_capital = get_random_country()
|
151 |
-
return redirect(url_for('quiz_capital'))
|
152 |
-
|
153 |
-
@app.route('/quiz_element', methods=['GET', 'POST'])
|
154 |
-
def quiz_element():
|
155 |
# セッションに元素がない場合はランダムに選択
|
156 |
if "element" not in session:
|
157 |
session["element"] = random.choice(list(element_outer_electrons.keys()))
|
@@ -163,38 +43,15 @@ def quiz_element():
|
|
163 |
result = "正解です!"
|
164 |
else:
|
165 |
result = f"残念!正解は {correct_answer} でした。"
|
166 |
-
return render_template("
|
167 |
|
168 |
-
return render_template("
|
169 |
|
170 |
-
@app.route("/
|
171 |
-
def
|
172 |
# 次の問題をセッションに設定し、リダイレクト
|
173 |
session["element"] = random.choice(list(element_outer_electrons.keys()))
|
174 |
-
return redirect(url_for("
|
175 |
-
|
176 |
-
@app.route('/quiz_element2num', methods=['GET', 'POST'])
|
177 |
-
def quiz_element2num():
|
178 |
-
# セッションに元素がない場合はランダムに選択
|
179 |
-
if "element" not in session:
|
180 |
-
session["element"] = random.choice(list(element_atomic_numbers.values()))[1]
|
181 |
-
|
182 |
-
if request.method == "POST":
|
183 |
-
user_input = int(request.form["user_input"])
|
184 |
-
correct_answer = [key for key, value in element_atomic_numbers.items() if value[1] == session["element"]][0]
|
185 |
-
if user_input == correct_answer:
|
186 |
-
result = "正解です!"
|
187 |
-
else:
|
188 |
-
result = f"残念!正解は {correct_answer} でした。"
|
189 |
-
return render_template("quiz_element2num.html", element=session["element"], result=result)
|
190 |
-
|
191 |
-
return render_template("quiz_element2num.html", element=session["element"], result=None)
|
192 |
-
|
193 |
-
@app.route("/next_element2num", methods=["POST"])
|
194 |
-
def next_question_element2num():
|
195 |
-
# 次の問題をセッションに設定し、リダイレクト
|
196 |
-
session["element"] = random.choice(list(element_atomic_numbers.values()))[1]
|
197 |
-
return redirect(url_for("quiz_element2num"))
|
198 |
|
199 |
-
if __name__ ==
|
200 |
-
app.run(
|
|
|
4 |
app = Flask(__name__)
|
5 |
app.secret_key = "your_secret_key_here"
|
6 |
|
7 |
+
# 元素と最外殻電子の数の辞書
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
element_outer_electrons: dict[str, int] = {
|
9 |
"水素": 1,
|
10 |
"ヘリウム": 2,
|
|
|
30 |
# 他の元素も追加可能
|
31 |
}
|
32 |
|
33 |
+
@app.route("/", methods=["GET", "POST"])
|
34 |
+
def quiz():
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
# セッションに元素がない場合はランダムに選択
|
36 |
if "element" not in session:
|
37 |
session["element"] = random.choice(list(element_outer_electrons.keys()))
|
|
|
43 |
result = "正解です!"
|
44 |
else:
|
45 |
result = f"残念!正解は {correct_answer} でした。"
|
46 |
+
return render_template("quiz.html", element=session["element"], result=result)
|
47 |
|
48 |
+
return render_template("quiz.html", element=session["element"], result=None)
|
49 |
|
50 |
+
@app.route("/next", methods=["POST"])
|
51 |
+
def next_question():
|
52 |
# 次の問題をセッションに設定し、リダイレクト
|
53 |
session["element"] = random.choice(list(element_outer_electrons.keys()))
|
54 |
+
return redirect(url_for("quiz"))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
|
56 |
+
if __name__ == "__main__":
|
57 |
+
app.run(port=7860,host="0.0.0.0")
|