pontz_rwのブログ

プログラミング等の備忘録

ITP1_5_B: Print a Frame

フレームの描画 | プログラミング入門 | Aizu Online Judge
繰り返し構文を用いて2種類の文字列を出力する問題


四角形の枠と中身とで条件分岐させます。
枠を出力するのは、最初と最後の行と、そのほかの行の最初と最後の列です。


解答1

while True:
    H, W = map(int, input().split())
    if H == 0 and W == 0:
        break
    for i in range(H):
        if i == 0 or i == H - 1:
            print('#' * W)
        else:
            print('#' + '.' * (W - 2) + '#')
    print('')


解答2
条件分岐を*演算子で代用しています。

while True:
    H, W = map(int, input().split())
    if H == 0 and W == 0:
        break
    print('#' * W + '\n' + ('#' + '.' * (W - 2) + '#' + '\n') * (H - 2) + '#' * W + '\n')