Python
python3

化学を学ぶpython初心者が、ひとまずの腕試しに元素名を英語で覚えるプログラムを作ってみました

元素記号とは

学校で習ういわゆるH, He, Li, Be‥‥というやつですね。

原子は、陽子、中性子、電子で構成されていて、何の元素かを特定するのが陽子の数になり、今発見されている元素の数が、118個!

さておき。

化学系なら、元素名くらい英語で言えるようになりたい

というわけで、がんばってpythonすることにしました
よ~し!!

まず、原子番号、元素記号、日本語名、英語名が記されたcsvファイルをじゅーんび!!

perio.csv
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,Ne,ネオン,neon
11,Na,ナトリウム,sodium
12,Mg,マグネシウム,magnesium
13,Al,アルミニウム,aluminum
14,Si,ケイ素,silicon
15,P,リン,phosphorus
16,S,硫黄,sulfur
17,Cl,塩素,chlorine
18,Ar,アルゴン,argon
19,K,カリウム,potassium
20,Ca,カルシウム,calcium
21,Sc,スカンジウム,scandium
22,Ti,チタン,titanium
23,V,バナジウム,vanadium
24,Cr,クロム,chromium
25,Mn,マンガン,manganese
26,Fe,鉄,iron
27,Co,コバルト,cobalt
28,Ni,ニッケル,nickel
29,Cu,銅,copper
30,Zn,亜鉛,zinc
31,Ga,ガリウム,gallium
32,Ge,ゲルマニウム,germanium
33,As,ヒ素,arsenic
34,Se,セレン,selenium
35,Br,臭素,bromine
36,Kr,クリプトン,krypton
37,Rb,ルビジウム,rubidium
38,Sr,ストロンチウム,strontium
39,Y,イットリウム,yttrium
40,Zr,ジルコニウム,zirconium
41,Nb,ニオブ,niobium
42,Mo,モリブデン,molybdenum
43,Tc,テクネチウム,technetium
44,Ru,ルテニウム,ruthenium
45,Rh,ロジウム,rhodium
46,Pd,パラジウム,palladium
47,Ag,銀,silver
48,Cd,カドミウム,cadmium
49,In,インジウム,indium
50,Sn,スズ,tin
51,Sb,アンチモン,antimony
52,Te,テルル,tellurium
53,I,ヨウ素,iodine
54,Xe,キセノン,xenon
55,Cs,セシウム,cesium
56,Ba,バリウム,barium
57,La,ランタン,lanthanum
58,Ce,セリウム,cerium
59,Pr,プラセオジム,praseodymium
60,Nd,ネオジム,neodymium
61,Pm,プロメチウム,promethium
62,Sm,サマリウム,samarium
63,Eu,ユーロピウム,europium
64,Gd,ガドリニウム,gadolinium
65,Tb,テルビウム,terbium
66,Dy,ジスプロシウム,dysprosium
67,Ho,ホルミウム,holmium
68,Er,エルビウム,erbium
69,Tm,ツリウム,thulium
70,Yb,イッテルビウム,ytterbium
71,Lu,ルテチウム,lutetium
72,Hf,ハフニウム,hafnium
73,Ta,タンタル,tantalum
74,W,タングステン,tungsten
75,Re,レニウム,rhenium
76,Os,オスミウム,osmium
77,Ir,イリジウム,iridium
78,Pt,白金,platinum
79,Au,金,gold
80,Hg,水銀,mercury
81,Tl,タリウム,thallium
82,Pb,鉛,lead
83,Bi,ビスマス,bismuth
84,Po,ポロニウム,polonium
85,At,アスタチン,astatine
86,Rn,ラドン,radon
87,Fr,フランシウム,francium
88,Ra,ラジウム,radium
89,Ac,アクチニウム,actinium
90,Th,トリウム,thorium
91,Pa,プロトアクチニウム,protactinium
92,U,ウラン,uranium
93,Np,ネプツニウム,neptunium
94,Pu,プルトニウム,plutonium
95,Am,アメリシウム,americium
96,Cm,キュリウム,curium
97,Bk,バークリウム,berkelium
98,Cf,カリホルニウム,californium
99,Es,アインスタイニウム,einsteinium
100,Fm,フェルミウム,fermium
101,Md,メンデレビウム,mendelevium
102,No,ノーベリウム,nobelium
103,Lr,ローレンシウム,lawrencium
104,Rf,ラザホージウム,rutherfordium
105,Db,ドブニウム,dubnium
106,Sg,シーボーギウム,seaborgium
107,Bh,ボーリウム,bohrium
108,Hs,ハッシウム,hassium
109,Mt,マイトネリウム,meitnerium
110,Ds,ダームスタチウム,darmstadtium
111,Rg,レントゲニウム,roentgenium
112,Cn,コペルニシウム,Copernicium
113,Nh,ニホニウム,Nihonium
114,Fl,フレロビウム,Flerovium
115,Mc,モスコビウム,Moscovium
116,Lv,リバモリウム,Livermorium
117,Ts,テネシン,Tennessine
118,Og,オガネソン,Oganesson

pythonでコードを書いていきます

元素記号がランダムに表示され、解答者は、英語で答えを打ち込みます。
チャレンジは3回までとします。3回連続間違えると、解答が表示されるものとします。
なお、時間測定機能ありです。
nigate.csvの空ファイルをあらかじめ作っておくことで、間違えた問題のみのファイルも新しく作れます。
ファイル名を入力させることで、開くファイルを指定できます。

perio.py
import random
import time

t1 = time.time()
i = 0
j = 0
list = []
nigatelist = []
file = input("ファイル名:")
with open (file, encoding='utf-8') as f:
    for row in f:
        list.append(row)
    random.shuffle(list)
    for j in range(len(list)):
        columns = list[j].rstrip().split(',')
        j += 1
        number = columns[0]
        symbol = columns[1]
        Japanese = columns[2]
        English = columns[3]
        print(str(j) + '問目!')
        print(number, symbol, sep=':')
        for i in range(3):
            x = input("英語:")
            i += 1
            if x == English:
                print("OK\n")
                break
            else:
                if not i == 3:
                    print("もういっちょ!")
                else:
                    print("正解は" + English + "です。\n")
                    nigatelist.append(list[j-1])
                    with open('nigate.csv', 'w', encoding='utf-8') as wf:
                        for x in nigatelist:
                            wf.write(x.rstrip()+ '\n')

t2 = time.time()
elapsed_time = int(t2 - t1)
print("経過時間:" + str(elapsed_time) + "秒")


実行結果です

無題.png

長くなるので画像では省略しましたが、最後は経過時間が表示されます

ちょっといじくれば、元素記号を日本語で覚えるプログラムにも変更できますよー!

初級レベルの技しか使えてないのでまだまだいしょぼい涙

これからwebアプリ、Django等を学んでいく予定なので、いろいろ組み合わせて進化させていけたらと思います!