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

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

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

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

Q&A

解決済

2回答

524閲覧

この構成文でどうしてこの答えになるのか分からない。

Mnattou

総合スコア7

Python 3.x

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

0グッド

0クリップ

投稿2018/06/15 09:24

この以下の構成文をrunningすると

a=0
b=0
Flag=1
while Flag==1:
if a>b:
b=b+1
a=a
print("a=",a,"b=",b,"Flag=",Flag)

else: b=b a=a+1 if a>2 and b>2: Flag=0 a=a b=b print("a=",a,"b=",b,"Flag=",Flag)

これをRunすると

a= 1 b= 1 Flag= 1
a= 2 b= 2 Flag= 1
a= 3 b= 3 Flag= 1 (Flag=0のはずなのだが。。。)
a= 4 b= 3 Flag= 0

になってしまい、

if a>2 and b>2にの条件なのにも関わらず、この時のFlagの状態がなぜFlag=1にならないのかが理解できない

どうしたらこうなるのか教えて欲しい。

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

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

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

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

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

Mnattou

2018/06/16 04:31

今回は他の方が解答をしてくださいました。次回、LouiS0616様が提案してくださったようにコードブロックをして質問したいと思います。アドバイス、有難うございました。
guest

回答2

0

ベストアンサー

こんにちは、
まず質問欄にあるコードですがインデントが崩れているので以下のようにしました。

python

1a = 0 2b = 0 3Flag = 1 4while Flag == 1: 5 if a > b: 6 b += 1 7 else : 8 a = a + 1 9 if a > 2 and b > 2: 10 Flag = 0 11 12 print("a=",a,"b=",b,"Flag=",Flag)

a = 1 b = 1 Flag = 1
a = 2 b = 2 Flag = 1
a = 3 b = 3 Flag = 1 (Flag = 0のはずなのだが。。。)
a = 4 b = 3 Flag = 0

になってしまい、

if a>2 and b>2にの条件なのにも関わらず、この時のFlagの状態がなぜFlag=1にならないのかが理解できない

直前のa = 3,b = 2の時はa= 3 b= 2 Flag= 1となります。
Flag = 1なのでまたwhile文の最初から実行されますが、この時 a = 3, b = 2なのでa > bを満たします。
よって、分岐のif a > b:の方が実行されb += 1となるためbが1増えます。(この時点でb = 3)
この時はまだFlag = 1なので結果としてa = 3, b = 3 Flag = 1となるわけです。

投稿2018/06/15 09:52

編集2018/06/15 09:53
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2018/06/15 09:54

ソースコードを載せるときはコードブロックを適用してインデントを整えてください。 特にpythonの場合はインデントの位置の違いで結果が大きく変わります。
Mnattou

2018/06/16 04:33

Stars1024様、 そうですよね、インデントの位置の違いで全く違う結果が出てきますよね、 次回、質問させていただくときは、コードブロックを適用し、インデントを整えて質問させていただきます。 また、丁寧な解答、有難うございました。
guest

0

if a > b:の中に入っているから。
なぜelse:の方に入っていると思っているのか?

投稿2018/06/15 09:31

fuzzball

総合スコア16731

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問