inp = int(input("Enter a number:"))
for i in inp:
n = n + i;
print (n)
...エラーがスローされます:'int' object is not iterable
たとえば、110のように、各桁を加算して合計を求めました。1+ 1 + 0 =2。どうすればよいですか?
ありがとう
最初に、int
への呼び出しを失います-文字列を整数に変換していますが、これは望みのものではありません(各文字を独自の番号として扱いたい)。変化する:
inp = int(input("Enter a number:"))
に:
inp = input("Enter a number:")
inp
は数字の文字列であるため、数字ごとにループできます。
次に、いくつかの初期値をn
に割り当てます。現在のコードの状態では、初期化しないためNameError
が得られます。おそらくn = 0
for
ループの前。
次に、文字と整数の違いをもう一度考えます。あなたは今持っています:
n = n + i;
不要なセミコロン(Pythonはインデントベースの構文です)以外に、character iをinteger nに加算しようとしていますが、これは機能しません!したがって、thisは
n = n + int(i)
文字を変える'7'
から整数7
など。
試してください:
for i in str(inp):
これは、文字列表現内の文字を反復処理します。各文字を取得したら、別の数字のように使用できます。
多分あなたはしようとしている
for i in range(inp)
Range()を使用していないため、このエラーが発生しました。
サイドノート:すべての数字の合計を取得したい場合は、単に行うことができます
print sum(int(digit) for digit in raw_input('Enter a number:'))
さて、数字を表す文字列を処理し、数字自体ではなく数字を反復処理します(ローマ数字の「CX」や16進数の「0x6e」(両方とも110)のように、異なる方法で記述できる抽象的なエンティティです)または何でも)。
したがって:
_inp = input('Enter a number:')
n = 0
for digit in inp:
n = n + int(digit)
print(n)
_
_n = 0
_が必要なことに注意してください(ループに入る前のどこか)。存在しない変数の値を取得することはできません(n = n + int(digit)
の右側はn
の値を取得します)。その時点でn
が存在する場合、現在のニーズとはまったく関係のない何かが保持され、予期しない動作が発生する可能性があります。それを防ぐ必要があります。
このソリューションは、ユーザーが提供する入力が実際に数字であることを保証しようとしません。この問題については、考えてみてください(ヒント:必要なものは Pythonチュートリアル )にあります)。
for .. in
ステートメントは、イテレータが定義されている型を使用することを想定しています。単純なint型には反復子がありません。
ヒルズがすでに言及したように
inp = int(input("Enter a number:"))
n = 0
for i in str(inp):
n = n + int(i);
print n
何かをループしているとき、キーワードは「IN」です。常に何かのリストと考えてください。プレーン整数をループすることはできません。したがって、繰り返しはできません。
入力を受け取り、文字列であることを確認して反復可能にします。
次に、リストの内包表記を実行し、各値を数値に戻します。
これで、必要に応じてすべての数値の合計を計算できます。
inp = [int(i) for i in str(input("Enter a number:"))]
print sum(inp)
または、実行中に出力を本当に見たい場合:
def printadd(x,y):
print x+y
return x+y
inp = [int(i) for i in str(input("Enter a number:"))]
reduce(printadd,inp)
int()
にするのではなく、range()
にすることでこの問題を解決できます。
inp = range(input("Enter a number: "))
_for i in inp:
_をfor i in range(1,inp):
に変更しようとすることができます。反復は単一のintでは機能しません。代わりに、実行する範囲を指定する必要があります。
OP-sの質問(「110などの各桁を追加して合計を求めたい。1+ 1 + 0 =2。どうすればよいですか?」)に対する1つの可能な答えは、組み込み関数を使用することです。 divmod()
num = int(input('Enter a number: ')
nums_sum = 0
while num:
num, reminder = divmod(num, 10)
nums_sum += reminder