ユーザーは次のような数式を入力します。C12H2COOH
C = 12.01、H = 1.008、O = 16 として、その分子量を計算する必要があります。2 桁の後に 2 桁の要素と、後に数字のない要素に注意するように言われました。また、プログラムは化学式を要求し続け、Enter キーを押すと終了します。
for ループと while ループの辞書を使用してみました。元素の後に1桁の化合物を計算するようになったのC2H2
ですが、2桁を入れたり、元素の隣に数字を入れなかったりすると失敗します。可能なルートとして区切り文字を削除せずに文字列を区切る方法も調べていましたか? 皆さんは、この問題にどのように取り組みますか? どんな助けでも大歓迎です、ありがとう!
これが私がこれまでに持っているものです。とても面倒です。
xxx = ["H", "C", "O"]
elements = set(xxx)
while(True):
chemical_formula = input("Enter chemical formula, or enter to quit: ")
if chemical_formula == "":
break
else:
characters = list(chemical_formula)
n = 0
print(characters)
for i in characters:
if characters[n] == "C":
c = 12.0107
if elements.intersection(set(characters[n+1])):
print(c)
else:
number = int(characters[n+1])
print(number*c)
elif characters[n] == "H":
h = 1.00794
if elements.intersection(set(characters[n+1])):
print(h)
else:
number = int(characters[n+1])
print(number*h)
elif characters[n] == "O":
o = 15.9994
if elements.intersection(set(characters[n+1])):
print(c)
else:
number = int(characters[n+1])
print(number*o)
else:
numero = int(i)
print(i*0)
n = n+1