2

だから私がやろうとしているのは、名前の文字の値を追加するコードを作成することです。例:名前:ABCD ---> 1 + 2+ 3+ 4 = 10

これまでの私のコードは次のとおりです。

def main():
    name = input("Please enter your name (all lowercase): ")
    print("\nHere is the code: ")
    for ch in name:
        print(ord(ch)-96,end=" ")

私がしたいのは、のすべての値を追加することです(ord(ch)-96,end=" ")

4

4 に答える 4

3

あなたはこれを行うことができます:

sum(ord(c) - 96 for c in name)

関連ドキュメント

于 2012-12-09T17:44:09.340 に答える
2

現在のように各文字の値を実際に印刷する必要がない場合は、sum他の人が提案しているように使用してください。

ただし、各文字の値を出力するループ本体を保持し、それらすべてを合計する場合は、ループの外側に変数を作成し、ord(c)-96毎回インクリメントします。

total = 0
for ch in name:
    charValue = ord(ch)-96
    print(charValue, end="")
    total += charValue

forループが完了totalすると、各文字のすべての値の合計が保持されます。

于 2012-12-09T17:49:35.357 に答える
1
In [19]: sum(ord(c) - ord('A') + 1 for c in 'ABCD')
Out[19]: 10
于 2012-12-09T17:44:11.087 に答える
1

dict1つの方法は、char-> valueのマッピングを作成することです。これは、 :を使用して実行できます。

>>> from string import ascii_lowercase
>>> lookup = {ch:idx for idx, ch in enumerate(ascii_lowercase, start=1)}
>>> test = 'abcd'
>>> sum(lookup[ch] for ch in test)
10

これにより、順序値をいじくり回す必要がなくなり、もう少し明確になります...

于 2012-12-09T18:27:43.040 に答える