0

ユーザーは化学式を入力します。たとえばCO2OHC5H18COO、またはそのようなもの。C = 12.01次に、出力は、 、H = 1.008、が与えられた分子量になりますO = 16。私はこれまでのところこれを持っています:

while(True):

    chemical_formula = input("Enter chemical formula, or enter to quit: ")

    length = len(chemical_formula)
    if chemical_formula == "":
        break
    else:
        char = list(chemical_formula)
        length = len(char)
        for i in char:
            if i == "C":
                c = 12.0107
            elif i == "H":
                h = 1.00794
            elif i == "O":
                o = 15.9994
            else:
                if char[i-1] == "C":
                    print(float(i)*c)
                elif char[i-1] == "H":
                    print(float(i)*h)
                elif char[i-1] == "O":
                    print(float(i)*o)
            

しかし、forループで前の要素を取得するために使用できない理由がわからないので(i-1)、それを数値に掛けることができます。文字列の前の要素を取得する他の方法はありますか? それとも、この問題にアプローチする別の方法がありますか?

4

1 に答える 1

0

以下の例のように、要素ではなくインデックスを反復処理する必要があります。

chemical_formula = input("Enter chemical formula, or enter to quit: ")

length = len(chemical_formula)
if chemical_formula == "":
    break
else:
    char = list(chemical_formula)
    length = len(char)
    for i in range(length):
        if char[i] == "C":
            c = 12.0107
        elif char[i] == "H":
            h = 1.00794
        elif char[i] == "O":
            o = 15.9994
        else:
            if char[i-1] == "C":
                print(float(i)*c)
            elif char[i-1] == "H":
                print(float(i)*h)
            elif char[i-1] == "O":
                print(float(i)*o)
于 2013-05-22T08:59:25.660 に答える