ループを使用して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())代わりに使用してください)。