AIZU ONLINE JUDGE ITP1_5_Aをpythonで解いてみた

python

本サイトAIZU ONLINE JUDGE ITP1_5_A へはこちらから

目次

問題:長方形の描画

たてH cm よこ W cm の長方形を描くプログラムを作成して下さい。

1cm × 1cm の長方形を ‘#’で表します。

Input

入力は複数のデータセットから構成されています。各データセットの形式は以下の通りです:

H W

H, W がともに 0 のとき、入力の終わりとします。

Output

各データセットについて、H × W 個の ‘#’ で描かれた長方形を出力して下さい。

各データセットの後に、1つの空行を入れて下さい。

Constraints

  • 1 ≤ H ≤ 300
  • 1 ≤ W ≤ 300

Sample Input

3 4
5 6
2 2
0 0

Sample Output

####
####
####

######
######
######
######
######

##
##

解答例

while True:
    H, W = map(int, input().split())
    if H == 0 and W == 0:
        break
    for i in range(H):
        print("#"*W)
    print()

解説

以下のように解いていきます。

  1. while文を使用し、入力処理を行う
  2. 長方形の描画

while文を使用し、入力処理を行う

ある条件まで入力を続ける場合はwhile文とif文を組み合わせて、入力処理を行います。

# if文の条件式に当てはまるまでループ処理を続ける
while True:
    処理
    # この条件式に当てはまる場合、break文でループ処理を終了する
    if 条件式:
        break

今回は、whileループ内でmap関数でH、Wに2つの整数を設定し、H と W がともに 0の場合にbreak文で処理を終了します。

# 終了条件に当てはまるまで処理を続ける
while True:
    # input().split()で複数個の文字列を取得 → int関数に当てはめint型に変換 → H, Wに設定
    H, W = map(int, input().split())
    # H と W がともに0の場合にbreak文で処理を終了
    if H == 0 and W == 0:
        break

※サイト内「AIZU ONLINE JUDGE ITP1_1_Cをpythonで解いてみた」の、map関数とはにmap関数の使用方法が書かれておりますのでぜひご覧ください。

長方形の描画

for文を使用し、W(横の長さ)分の”#”をH(たての長さ)回繰り返して表示します。

今回は、”各データセットの後に、1つの空行を入れて下さい。”という制約(Constraints)があるため、for文の後に空のprint関数を記述します。

while True:
    H, W = map(int, input().split())
    if H == 0 and W == 0:
        break
    # H(たての長さ)回繰り返す
    for i in range(H):
        # W(横の長さ)分"#"を表示
        print("#"*W)
    # 各データセットの後に、1つの空行を入れてるため空のprint関数を記述
    print()

最後に、もう一度プログラムを確認してみましょう。

# 終了条件に当てはまるまで処理を続ける
while True:
    # input().split()で複数個の文字列を取得 → int関数に当てはめint型に変換 → H, Wに設定
    H, W = map(int, input().split())
    # H と W がともに0の場合にbreak文で処理を終了
    if H == 0 and W == 0:
        break
    # H(たての長さ)回繰り返す
    for i in range(H):
        # W(横の長さ)分"#"を表示
        print("#"*W)
    # 各データセットの後に、1つの空行を入れてるため空のprint関数を記述
    print()
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

雇われのシステムエンジニアです。
普段は車載ECUのセキュリティー分野に従事しております。

■保有資格
Salesforce 認定 Platform アプリケーションビルダー
Salesforce 認定 Platform デベロッパー

コメント

コメントする

目次