名前の数値を計算するプログラムを書こうとしています
これは私が書いたものです
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
名前の数値を計算するプログラムを書こうとしています
これは私が書いたものです
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
sumループ内で毎回変数を更新する必要があります。ループを次のように変更します。
for ch in name :
sum += ord(ch)-96
print(sum)
sum()ジェネレーター式で関数を使用することもできます。
>>> name='anna'
>>> sum(ord(ch) - 96 for ch in name)
30
sum 変数を変更するのを忘れました。次のようにします。
low = name.lower()
sum = 0
print ()
for ch in name :
sum = sum + ord(ch)-96
print(sum)
適切な場所で使用する必要が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])
まず、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()))