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

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

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

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

1回答

28720閲覧

(Python3)for文で 数値の合計を求めるコードの疑問

matsukogo

総合スコア8

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2017/04/09 23:05

###\質問
Python3を勉強している初心者です。

for文を使って数値の合計(1,2,3,4,5を順番に足していく)を求める文に関して質問です。

合計値の変数sumの初期値(?)を設定しなくてはならないのは分かるのですが、それをfor文の外に置く理由がわかりません。for文の繰り返し処理はfor文の中で起こるので、試しにfor文の中にsum=0を置いところ、繰り返し処理の度に初期値の0に戻り最終的な値は4となりました。for文の外に置いたら最終的な値は15となりうまくいきました。

for文は繰り返しの度にプログラムの先頭に戻るのか?と思い、sum=0とfor文の間に"こんにちは"というprint関数を入れましたが繰り返し表示されないので違うんだと思いました。

色々と調べましたが、わかりません。どういう構造でこの処理がなされているのかご教授いただけないでしょうか?

###発生している問題・エラーメッセージ

エラーメッセージ

###該当のソースコード
Number=[1,2,3,4,5]

sum = 0

print("こんにちは")

for n in Number:
sum += n
print(sum)

###試したこと

###補足情報(言語/FW/ツール等のバージョンなど)
python3.6

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

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

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

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

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

guest

回答1

0

ベストアンサー

プログラムが処理されている順番を簡単に書いてみます。

1. Number=[1,2,3,4,5] が定義されます 2. sum = 0 が定義されます 3. "こんにちは"がprintされます 4. Numberリストの先頭(=1)をfor文で取り出してnにセットします 5. sum に n(=1) が加算されます 6. sum が printされます 7. Numberリストの先頭(=2)をfor文で取り出してnにセットします 8. sum に n(=2) が加算されます 9. sum が printされます 10. Numberリストの先頭(=3)をfor文で取り出してnにセットします 11. sum に n(=3) が加算されます 12. sum が printされます . . * 4,5,6の処理をNumberリストが空になるまで繰り返します

for文の処理(4,5,6)の中に、 sum = 0 で初期化する処理が入ってしまうと、加算した結果が0になってしまうので、sumはfor文の外側で定義する必要があります。

また、プログラムの流れを追うには pdb などのデバッガーを使うと、1ステップずつコードを実行できるので、理解の助けになるかもしれません。pdbの参考になりそうな記事を貼り付けておきます。

http://www.sakito.com/2012/10/python-debuggerpdb.html

投稿2017/04/09 23:21

編集2017/04/09 23:41
tell_k

総合スコア2120

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

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

matsukogo

2017/04/09 23:38

早速ありがとうございました。大変よくわかりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問