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

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

新規登録して質問してみよう
ただいま回答率
85.46%
コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

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

Q&A

3回答

215閲覧

for文の意味を教えてください。

退会済みユーザー

退会済みユーザー

総合スコア0

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

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

0グッド

0クリップ

投稿2021/02/07 09:29

編集2021/02/07 09:31

前提・実現したいこと

python初心者です。以下文の
①total=0の意味と
②total=☆total☆ + num の☆マークではさんだtotalの意味が分からないため、
わかりやすくご教示いただきたいです。

ーーーーーーーーーーーーーーーーーーーー
total=0
for num in range(1,11):
total=total + num

print(total)
ーーーーーーーーーーーーーーーーーーーー

一方で以下の文では、なぜ
③answer=1となっているのかが分かりません。

ーーーーーーーーーーーーーーーーーーーー
answer=1
for num in range(1,101):
answer=answer*num
print(num , answer)

ーーーーーーーーーーーーーーーーーーーー

簡単な問いで恐縮ですが、よろしくお願いいたします。

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

上記に記載しました。

該当のソースコード

上記に記載しました

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

BeatStar

2021/02/10 13:38 編集

コードは『上記に記載しました』の部分に書いてください。 そのためのスペースですよ。 そのまま書くと、インデントが無視されるので読みづらいです。 (投稿者なら編集できるので編集してください)
guest

回答3

0

正しい回答付いていますが、補足な感じで。

python

1total=total + num

この書き方は、pythonだけでなくプログラミング全般で出てくる書き方です。この書き方で、変更前のtotalの値にnumの値を足したものがtotalに入ります。

両側にtotalがあるのが不思議に見えますが、左のtotalは変数としてのtotalを表わし、右のtotalはその時点=計算前にtetalの指している値を意味しています。

投稿2021/02/07 10:25

TakaiY

総合スコア12821

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

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

退会済みユーザー

退会済みユーザー

2021/02/07 12:35

TakaiYさん 回答ありがとうございます。そうなんです。 両側にtotalがあることがずっと不思議でした。左と右の意味がそれぞれ異なっているのですね。 頭の中が整理できました!感謝申し上げます。
guest

0

ほとんど答えが出ていますが。


えーっと、こういう場合は『ロジック』を読みましょう。

プログラムって、『なんでもあり』ではなくて、人間がやっていることを逐一分解しているだけです。

だから、『一行レベルで何をしているか』をコメントにしてみます。

おそらく、元のコードは、

Python

1# Sample1 とする 2 3total=0 4for num in range(1,11): 5 total=total + num 6 7print(total)

と、

Python

1# Sample2 とする 2 3answer=1 4for num in range(1,101): 5 answer=answer*num 6 print(num , answer)

だと思います。

まずSample1からやってみましょう。

Python

1# Sample1 とする 2 3# totalという変数を 0 にしている 4total=0 5 6# [1,11) の範囲 (= 1≦範囲<11 ) を繰り返す。その値をnumに入れつつ…… 7for num in range(1,11): 8 # total に num を追加して、その値を total に入れる 9 total=total + num 10 11# 結果を表示 12print(total)

となっていますね。

そうすると、

1. totalを0にしておく 2. [1,11) の範囲を num に入れつつループ 2.1. total に num を追加して total に入れる 3. 結果を表示

となっています。

これを現実世界で考えてみてください。

すると、『1から11未満の和を計算している』ことに気づきます。

(2.1)のやつは、total = total + num ですが、これは

  1. total + num
  2. total = (1の結果)

ということをしています。

だから total に num が追加されていくのです。

Sample2 も同様にやってみましょう。

そうするとわかるはずです。

プログラムは『こういう場合はこう書け』ではなくて、『理詰め』です。
ロジカルシンキングが必要になります

投稿2021/02/10 13:52

編集2021/02/10 13:53
BeatStar

総合スコア4958

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

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

0

ーーーーーーーーーーーーーーーーーーーー

total=0
for num in range(1,11):
total=total + num
print(total)
ーーーーーーーーーーーーーーーーーーーー

totalは合計値を格納するための変数です。最初(足す前)は「0」なのでtotal=0とします。

ーーーーーーーーーーーーーーーーーーーー

answer=1
for num in range(1,101):
answer=answer*num
print(num , answer)
ーーーーーーーーーーーーーーーーーーーー

上記は何のための計算か分かりませんが、answerの初期値を0にすると全部answerが0になってしまうので初期値を1にしているのではないでしょうか?

投稿2021/02/07 09:46

meg_

総合スコア10605

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

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

退会済みユーザー

退会済みユーザー

2021/02/07 12:34

meg_さん 足す前の「0」というのも記載しなければならないのですね。 早々のご回答、ありがとうございます!すっきりしました。 ppaulさん 補足コメントありがとうございます!
meg_

2021/02/07 13:02

total=0の行を消して実行すると、「NameError: name 'total' is not defined」のエラーが発生します。色々試されると勉強になるかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問