きっかけなんて些細なモンですよ。

NEW GAME!を観ました。プログラミング始めます。(9)

ボルダリング行ってきました!楽しかった~!!

f:id:kirintt:20170831015435p:plain

サンプルプログラムに近づいてきたか…?

☟前回の記事 

nagoyanofes.hatenadiary.jp

※基本的に、愛知大学の有澤先生がプログラミングの講義で使用しているテキスト「Pythonによるプログラミング入門」に沿って進めています。

Python 2.7.13を使用しています。

 

 

サンプルプログラム

1か月分のカレンダーを表示するプログラム(「Pythonによるプログラミング入門」p. 13)。

f:id:kirintt:20170826201139p:plain

今日のキーワード

条件に応じて処理を変える if C:

C(条件)を満たすとき、インデントされた部分を実行。

 

例) 7の倍数で改行(, p. 21)

f:id:kirintt:20170831020331p:plain

  • "if x%7 == 0:" ←「もしもxを7で割った余りが0であれば」
  • "=="で両辺が等しいことを示す
  • "="は代入

 

問1

月の最初が水曜日から始まるプログラムでは 4,11,18,25 で改行しなくてはならないであろう。そこで、次の結果が得られるプログラムを書きなさい。(ヒント: これらは 7 で割って4 余る)

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

引用元:Pythonによるプログラミング入門, p. 22

f:id:kirintt:20170831021310p:plain

  • 1から31までを順次書き出し。
  • 7で割ったときの余りが4であれば改行。

 

整形する "%5d"%x

10進数xについて、1辺りの表示スペースを5マスに。

 

例1)

日曜日から始まり、ひと月が 31 日のカレンダーには次のように数字が現われる。

f:id:kirintt:20170831022318p:plain

数字の表示位置が揃っていることに注意する。(2 と 3 の間には 5 個の空白があり、23 と 24の間には 4 個の空白がある) これを書いてくれるプログラムを作りなさい。

引用元:(, p. 22)

f:id:kirintt:20170831022455p:plain

  • "%5d"では書き方(書式)を指定している。ここで、
  • %の次の数字はカラム数(データの長さ)、
  • dは10進数で表示することを意味する。
  • "%5d"の次の%に続く数字は、"%5d"で指定された書き方に従って表示される。
  • ここでは"%5d"という書式に従ってx(1~31)が表示されている。
  • 文字列(a, b, cなど)の書式を指定して表示したい場合は"%5s"のように、" "内の最後にsをつける。

f:id:kirintt:20170831024009p:plain

  • ここでの"%5s"%に続くxはsunやmonなどの文字列。
  • このように書き方を指定しなくても、1行にいくつかのデータを表示する場合には、それらの間に1カラム分の空白が入る。
問1

次の出力が得られるプログラムを作りなさい。

f:id:kirintt:20170831024643p:plain

 引用元:(, p. 24)

f:id:kirintt:20170831024751p:plain

  • for(1つ目)...曜日を書き出し。
  • 改行。
  • for(2つ目)...1~31まで表示。7の倍数で改行。
  • 書式:1つの曜日/日にちを5カラムで表示。

 

問2

次の出力が得られるプログラムを作りなさい。

f:id:kirintt:20170831025208p:plain

 引用元:(, p. 24)

f:id:kirintt:20170831025506p:plain

  • for(2つ目)..."---"を3回表示。
  • for(3つ目)...1~31まで表示。xを7で割った余りが4のとき改行
  • 書式:1つの"---"/曜日/日にちを5カラムで表示。

 

今日のミス

条件に応じて処理を変える if C:

f:id:kirintt:20170831025913p:plain

  • if文での":"の付け忘れ。forのときもやってたし文法ミスの定番になってる。

 

整形する "%5d"%x

問2

f:id:kirintt:20170831030201p:plain1回目

  • 曜日の前に"---"を入れちゃってる。
  • "---"の後に","を付け忘れたため、"---"が一つ書き出される度に改行されてる。

 

f:id:kirintt:20170831030435p:plain2回目

  •  "---"が入る分、数字がずれることを考慮していなかった。
  • この後、3回目で成功。

 

以上。

「整形する」問2の結果だけ見るとサンプルプログラムで作ったカレンダーと同じに!サンプルプログラムのマスターも近い…?

 

☟次

nagoyanofes.hatenadiary.jp