質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

1555閲覧

python 演算子 +=

falx

総合スコア4

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/04/03 08:21

編集2021/04/03 09:36
numbers = [12, 34, 56, 78, 90] total = 0 for num in numbers: # ここに、合計を計算するコードを記述する total += num print(total)

【total += num】 total = total + num

という部分で私の考え方は、number 内にある5つの数値をひとつずつ total と足していき、その和が total に入るという考え方なのですが実際はnum 内のすべての数値をたす結果に至ります

なぜすべての数値が足される結果になるのか知りたいです

例) 考え方

私                        答え(おそらく)
total = total + num → 0 + 12 = 12      total = total + num → 12+34+56+78+90 = 270
total = total + num → 0 + 34 = 34
total = total + num → 0 + 56 = 56
total = total + num → 0 + 78 = 78
total = total + num → 0 + 90 = 90

一行ずつが答えだと思っている↑
上記のコードの答えではないため不正解    これが答えなのですがなんでこうなるのかわからない↑

結果がわかっていても理解ができずにいます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

このコードの場合、for文を回している時にtotalの値は繰り返し一回ごとに0に戻されるわけではなく、前回の繰り返しの時の値が保存されていきます。ですので、結果としてリストnumberの値を全て足すことになってしまったわけです。

もし、質問者様の求められる答えを得たい場合は以下のようにするといいかと思います。

python

1 2numbers = [12, 34, 56, 78, 90] 3 4for num in numbers: 5 total = 0 6 total += num 7 print(total) 8

このようにすれば、
12
34
56
78
90
と出力されるのではないでしょうか。

投稿2021/04/03 08:34

編集2021/04/03 08:36
AnOtter

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

falx

2021/04/03 10:02 編集

こめんとありがとうございます 納得がいきました。ありがとうございます!!!!!!!!!!!!!!!!!!!!! 予想ですが、こいうことですか? 12 を最初に足すと、12が出力され、total=0 だったのが 12 に代わる でまた、今度は 34 がたされて、足された数値が 12 からまたかわる それの繰り返し?ということでよろしいでしょうか?
AnOtter

2021/04/03 14:08

その通りです!
guest

0

total = total + num → 0 + 12

total = total + num → 0 + 34
total = total + num → 0 + 56
total = total + num → 0 + 78
total = total + num → 0 + 90

上記とするなら、

python

1numbers = [12, 34, 56, 78, 90] 2for num in numbers: 3 total = 0 4 total += num 5 print(total)

のようにループ内でtotalを初期化します。

違いは分かりますか?

投稿2021/04/03 08:36

meg_

総合スコア10760

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

falx

2021/04/03 09:57 編集

コメントありがとうございます わかりました。for 分の中にいれる、いれないとで変わるということでよろしいでしょうか?
meg_

2021/04/03 09:58

勘違いはしていませんよ。私のコードでは出力が「12,34,56,78,90」となり、質問のコードでは出力が「270」となります。何故私のコードで質問者さんが考えたような出力となるのか?質問のコードとの差異は何か?を質問者さんに考えていただき、違いを理解していただければと思いました。 ループ中の変数の出力方法は示しましたので、質問のコードに組み入れればコードの理解が深まるでしょう。
guest

0

ベストアンサー

totalという変数は、前回の結果が代入されているので、その値を使っています。
以下のようになるのではないでしょうか?

total = total + num → 0 + 12 = 12
total = total + num → 12 + 34 = 46
total = total + num → 46 + 56 = 102
total = total + num → 102 + 78 = 180
total = total + num → 180 + 90 = 270

forの中で、print(total)で確認してみるのがよいと思います!

投稿2021/04/03 08:33

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

falx

2021/04/03 09:50

コメントありがとうございます なぜ前回の結果が保存されそのまま使われるかがわかりませんが、 total = 0 にしているからですか? total = 0 と決められているのに数値が変わっていくという認識でよろしいでしょうか?
退会済みユーザー

退会済みユーザー

2021/04/03 10:57

total=0という文は、その時点では、totalが0になると思います!! forは、繰り返すという意味なので、for文は、次のようになります。 numbers = [12, 34, 56, 78, 90] total = 0 total = total + number[0] total = total + number[1] total = total + number[2] total = total + number[3] total = total + number[4] print(total) でそれぞれ、totalにはいっている値を記述してみると。 numbers = [12, 34, 56, 78, 90] total(0) = 0 total(12) = total(0) + number[0](12) total(46) = total(12) + number[1](34) total(102) = total(46) + number[2](56) total(180) = total(102) + number[3](78) total(270) = total(180) + number[4](90) print(total(270)) という感じになると思います。 確認するために、次のようにprintを入れてみるのが良いです。 numbers = [12, 34, 56, 78, 90] total = 0 for num in numbers: print("before add" ) print(total) # ここに、合計を計算するコードを記述する total += num print("after add" ) print(total) print(total)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問