1

名前の数値を計算するプログラムを書こうとしています

これは私が書いたものです

name = input("Enter your full name:")
low = name.lower()
sum = 0
print ()
for ch in name :
    print(sum + ord(ch)-96)

問題は、たとえば anna i got の名前を入力したときです

出力は次のようになります

1

14

14

1

どうすれば合計だけを取得できますか? この場合は 30

4

7 に答える 7

4

sumループ内で毎回変数を更新する必要があります。ループを次のように変更します。

for ch in name :
    sum += ord(ch)-96

print(sum)

sum()ジェネレーター式で関数を使用することもできます。

>>> name='anna'
>>> sum(ord(ch) - 96 for ch in name)
30
于 2013-09-19T06:40:59.910 に答える
3

sum 変数を変更するのを忘れました。次のようにします。

low = name.lower()
sum = 0
print ()
for ch in name :
    sum = sum + ord(ch)-96
print(sum)
于 2013-09-19T06:41:19.760 に答える
1

適切な場所で使用する必要がfor ch in nameあります-ジェネレータ式を使用してください。ループを使用するよりも Pythonic になります。

name = input("Enter your full name:")
low = name.lower()
print ()

print sum(ord(ch)-96 for ch in name)

リスト内包表記も使用できますが、遅くなります

print sum([ord(ch)-96 for ch in name])
于 2013-09-19T06:41:25.910 に答える
1

まず、Python キーワードを変数として使用しないようにします。あなたのコードでsumは、実際には関数であるキーワードを値 0 に設定しています。

次に、for ループに入っていることを確認します。そのため、for ループの進行中に累積合計を格納するものは何もありません。

これが私が思いついたものです:

name = input("Enter your full name: ").lower() #Convert input to lowercase
print () #Print a newline
print (sum(ord(ch) - 96 for ch in name)) #Use the sum function to compute sum of letters

一行:

print (sum(ord(ch) - 96 for ch in input("Enter your full name: ").lower()))
于 2013-09-19T07:07:46.020 に答える