ループを使用してPythonでこれらの数値を追加する方法を知りたいですか?ありがとう
num=input("Enter your number: ")
ansAdd= int(str(num)[7])+int(str(num)[5])+int(str(num)[3])+int(str(num)[1])
print....
ループを使用して実行したい場合は、次のようにします。
ansAdd = 0
for x in [7,5,3,1]:
ansAdd += int(str(num)[x])
ただし、リスト内包表記の使用はより Pythonic です
>>> s = '01234567'
>>> sum(map(int, s[1::2]))
16
仕組みは次のとおりです。
s[1::2]
index から始まる文字列のスライスを、文字列1
の末尾までステップごとに取得し2
ます。スライスの詳細については、Python チュートリアルの文字列セクションを参照してください。
map
関数とiterable (文字列は iterable) を取り、関数を各アイテムに適用して、結果のリストを返します。ここではmap
、各文字列の数字を に変換するために使用しますint
。
sum
イテラブルを取り、それを合計します。
sum
およびmap
ビルトイン、スライス、および明示的な for ループを使用せずにこれを実行する場合は、次のようにします。
>>> s = '01234567'
>>> total = 0
>>> for i in range(1, len(s), 2):
... total += int(s[i])
...
>>> total
16
>>> num=input()
12345678
>>> sum(map(int,num[:8][1::2]))
20
ここでは、num[:8][1::2]
に必要な数値のみを返し、index までの要素のみが計算に使用されていることを確認して、sum()
num[:8]
7
[1::2]
1,3,5,7
>>> num[:8][1::2]
>>> '2468'
ユーザー入力から奇数桁を合計したいようです。ループでそれを行うには:
num_str = raw_input("Enter your number: ")
ansAdd = 0
for digit in num_str[1::2]:
ansAdd += int(digit)
(構文[1::2]
は python の文字列スライス:
です。開始インデックス、停止インデックス、およびステップを示す3 つの数字で区切られています。省略された値は、python に可能な限り取得するように指示します。)
従来のループを使用せずにこれを行うより良い方法があります。
num_str = raw_input("Enter your number: ")
ansAdd = sum(int(digit) for digit in num_str[1::2])
Python 2 ではinput
、入力されたテキストを Python コードとして実行し、結果を返します。そのため、 を使用して整数を文字列に戻す必要がありましたstr
。
スクリプトのユーザーは任意の有効な Python コードを入力でき、実行されるため、Python 2 で使用することはセキュリティ リスクと見なされinput
ます。質問はありません。Python 3raw_input
では に名前が変更されinput
、古いものinput
は削除されました (eval(input())
代わりに使用してください)。