読者です 読者をやめる 読者になる 読者になる

No Caffeine, No Life

プログラミング(主にPython)

Python3: 出力の仕方

空白区切りで複数の数値の出力

コンマ区切りで複数の数値の出力

たとえば、こんな問題:

秒単位の時間 SS が与えられるので、hh:mm:ss の形式へ変換して出力してください。ここで、hh は時間、mm は 60 未満の分、ss は 60 未満の秒とします。hh、mm、ss を :(コロン)区切りで1行に出力してください。数値が1桁の場合、0 を付けて2桁表示をする必要はありません。 (Aizu Online Judge)

これに対しては、

のように、3つくらい書き方を覚えておけば良いかも。 

パターンを描く出力

#や○といった記号を指示通りに出力したいとき:

たてH cm よこ W cm の長方形を描くプログラムを作成して下さい。
1 cm × 1cm の長方形を '#'で表します。
入力は複数のデータセットから構成されています。各データセットの形式は以下のとおりです:
H W
H, W がともに 0 のとき、入力の終わりとします。(Aizu Online Judge)

こんなふうに'*'を用いることで繰り返しを表現できる。

以下のような、たてH cm よこ W cm の枠を描くプログラムを作成して下さい。

##########
#........#
#........#
#........#
#........#
##########
上図は、たて 6 cm よこ 10 cm の枠を表しています。
入力は複数のデータセットから構成されています。各データセットの形式は以下のとおりです:
H W
H, W がともに 0 のとき、入力の終わりとします。(Aizu Online Judge)

Solution No.2はNo.1をもう少し簡潔に、'*'記号を効率よく用いた感じ。

市松模様を出力してみよう:

以下のような、たてH cm よこ W cm のチェック柄の長方形を描くプログラムを作成して下さい。

#.#.#.#.#.
.#.#.#.#.#
#.#.#.#.#.
.#.#.#.#.#
#.#.#.#.#.
.#.#.#.#.#

上図は、たて 6 cm よこ 10 cm の長方形を表しています。
長方形の左上が "#" となるように描いて下さい。
入力は複数のデータセットから構成されています。各データセットの形式は以下のとおりです:
H W
H, W がともに 0 のとき、入力の終わりとします。(Aizu Online Judge)

偶数番目の列と奇数番目の列とで出力をわけることはすぐにわかると思うのだけれど、それをどう表現するかでコードの簡潔さがだいぶ異なる。Solution No.2は少し長いけれどとても素直でわかりやすい。No.3はNo.2をもう少し簡潔にしたようなもの。'#.'もしくは'.#’のペアを並べておいて、必要な分だけスライスして表示する、というのもわかりやすい。Solution No.1はちょっとトリッキーだが、よくよく考えたらこれで大丈夫なことがわかる。縦横(i, j)番目の位置に#か来るかピリオドがくるか、を(x+y) % 2で判定し、その要素を抜き出して、joinでくっつけている。

 

広告を非表示にする