T_NAKAの阿房ブログ

アクセスカウンタ

zoom RSS Python 再入門(4)

<<   作成日時 : 2016/11/08 00:01   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

このブログで使っている数式エディタの調子が良くありません。なので新しい記事を書けなくなっています。そこでテキストベースでも書ける記事を優先してUPすることにします。
さしあたって6.189 Exam Session 5の続きを見ていきます。

Problem 8: Freebie!
What is the output of the following code? If the code does not terminate, write error.

a = 0
while a < 3:
 while True:
  print "X",
  break
 print "O",
 a = a + 1

これは while loop が入れ子になってるんですが、内部の while loop が break で抜けられるようになっているところに注目です。
break は while loop のすぐ外なので、ここでは print "O", になる訳です。
画像

出力結果は XOXOXO


Problem 9: (insert evil laugh) ..is what I’d like to say. Still not that bad, though
What is the output of the following code? If the code does not terminate, write error.

a = 1
while a < 3:
 while a < 3:
  print "O",
 a = a + 1

画像


これは、入れ子の中の while loop で a をインクリメントしていないので、いつまでも a<3 で無限ループから抜け出せない状況です。

a = 1
while a < 3:
 if a % 2 == 0:
  b = 1
  while b < 3:
   print "X",
   b = b + 1
 print "O",
 a = a + 1
 
画像

a = 1 で print "O", a = 2 かつ b = 1 で print "X", a = 2 かつ b = 2 で print "X", a = 2 かつ b = 3 print "O", a = 3 で EXIT
つまり、出力は OXXO

a = 1
while a < 3:
 b = 1
 while b < 3:
  if a == 2:
   print "X",
  print "O",
  b = b + 1
 print "O",

これは TYPO なので無限ループで print "O", を永遠に繰り返します。なにがミスかというと、a をインクリメントしていないので if a == 2: print "X", に飛ぶこともないし、そもそも while a < 3: が常に成立してしまって、無限ループになる例です。

このミスを是正したのが次のプログラムです。

a = 1
while a < 3:
 b = 1
 while b < 3:
  if a == 2:
   print "X",
  print "O",
  b = b + 1
 a = a + 1
 print "O",
画像

a = 1、b = 1 で print "O", 、a = 1、b = 2 で print "O", 、a = 1、b = 3 で print "O", 、a = 2、b = 1 で print "X",print "O",、a = 2、b = 2 で print "X",print "O",、a = 2、b = 3 で print "O",、a = 2 で EXIT。
つまり、出力は OOOXOXOO

今日はこの辺で。。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Python 再入門(4) T_NAKAの阿房ブログ/BIGLOBEウェブリブログ
文字サイズ:       閉じる