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

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

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

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

Q&A

解決済

2回答

1222閲覧

while文について

dareshi

総合スコア16

Python

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

0グッド

0クリップ

投稿2018/07/28 05:54

編集2018/07/28 06:38

python

1import random 2my_hit_point = 15 3slime_hit_point = 8 4index = 0 5while slime_hit_point > 0 and my_hit_point > 0: 6 attack = random.randint(1,7) 7 if index % 2 == 0: 8 print('スライムに'+ str(attack) + 'のダメージ') 9 slime_hit_point -= attack 10 else: 11 print('ゆうしゃに'+ str(attack) + 'のダメージ') 12 my_hit_point -= attack 13 index += 1 14if my_hit_point > 0: 15 print('スライムをやっつけた') 16else: 17 print('ゆうしゃは死んでしまった')

このコードでなぜ、スライムと勇者交互にダメージが入るのでしょうか?前回の質問で、indexの値が(0,2,4)と偶数だと勇者が、(1,3,5)と奇数ならスライムがこうげきするという回答がありなしたが、どうしてindexの値が増えるのでしょうか、解答お願いします。

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

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

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

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

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

y_waiwai

2018/07/28 05:57 編集

プログラムコードは、<code>ボタン押して、'''の枠の中に貼り付けてください。Pythonはインデントがわからないとワケワカメになります
guest

回答2

0

ベストアンサー

index += 1 は、 index = index + 1 と同じ意味です。

数学的には意味不明な式になってしまっていますが、
プログラミングにおいては『indexに1を足した数を、新たにindexに代入』と読みます。

可視化してみる

Python

1i = 0 2while i < 10: 3 if i % 2 == 0: 4 print('偶数です') 5 else: 6 print('奇数です') 7 8 i += 1

Visualize Python, Java, JavaScript, TypeScript, and Ruby code execution
上記リンクを開いてしばらく待つと、次のような画面が表示されます。
可視化
『Forward』を押すと処理を進められます。
これで一段階ずつプログラムを動きを見てみると参考になるかもしれません。

コードの書き方について

teratailには、コードを見やすく表示する機能があります。
質問編集画面を開き、コードを選択した状態で<code>ボタンを押してください。
Python
特にPythonの場合、インデントが崩れるとコードの意味が変わってしまいます。

投稿2018/07/28 06:04

編集2018/07/28 07:38
LouiS0616

総合スコア35658

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

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

dareshi

2018/07/28 06:40

index += 1の意味については分かりましたが、なぜ交互に出てくるかが分かりません。解説お願いします。
dareshi

2018/07/28 06:49

何度も質問すみません。index = 0とindex  += 1はなぜ交互に出てくるのでしょうか。なにか、交互に出てくるためのコードがあるのでしょうか?
LouiS0616

2018/07/28 06:54

index = 0 はループ外ですから、一回しか実行されません。 index += 1 はループ内ですから、毎回実行されます。 交互には出てきません。交互するのはあくまでindexの値の偶奇です。
dareshi

2018/07/28 06:58

ということは、index +=1がwhile内で働いているということですか?
y_waiwai

2018/07/28 06:59

if index % 2 == 0: これが indexが0のときはどうなるか、1のときは、2,3,4のときはどうなるかを考えればいいかと
dareshi

2018/07/28 07:02

indexが増えるのはなぜですか、index +=1で1増える事は分かるのですが、それから2,3と増え続ける理由が分かりません。初心者なもので、何度もすみません……。
KojiDoi

2018/07/28 07:13

+=よりもwhileループが何をするものかが理解できていないようですね。 index +=1 の直前にprint(i)とか追加して何が起こるか観察してみたらどうでしょう。質問ばかりしていても理解はできないでしょう。
LouiS0616

2018/07/28 07:40

@dareshi さん もうちょっと立ち返って、while文の書き方から復習した方が良いと思います。 いちおう似たような例として、偶奇判定のコードを追記しておきました。 @y_waiwai さん、 @KojiDoi さん コメントありがとうございます。
dareshi

2018/07/28 07:47

みなさんのお陰で問題解決できました。本当にありがとうございました。
guest

0

... どうしてindexの値が増えるのでしょうか ...

index += 1 の文があるからです。

投稿2018/07/28 06:19

katoy

総合スコア22324

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問