0

ループを使用してPythonでこれらの数値を追加する方法を知りたいですか?ありがとう

num=input("Enter your number: ")

ansAdd= int(str(num)[7])+int(str(num)[5])+int(str(num)[3])+int(str(num)[1])

print....
4

4 に答える 4

1

ループを使用して実行したい場合は、次のようにします。

ansAdd = 0
for x in [7,5,3,1]:
  ansAdd += int(str(num)[x])

ただし、リスト内包表記の使用はより Pythonic です

于 2012-10-25T20:18:12.930 に答える
1
>>> 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    
于 2012-10-25T20:20:56.607 に答える
0
>>> 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'
于 2012-10-25T20:19:00.350 に答える
0

ユーザー入力から奇数桁を合計したいようです。ループでそれを行うには:

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

于 2012-10-25T20:19:21.993 に答える