コンソールにダイヤモンドを表示する。
問.コンソール上に「*」でひし形を出力してください。
今回は2重ループを使う問題です。
まずは自力でヒントを見ずに解いてみてください。
ヒント1:まずは三角形を作る。
1~5行目までを作る
ヒント2:法則を考える
スペースの数 | *の数 | |
1段目 | 4 | 1 |
2段目 | 3 | 3 |
3段目 | 2 | 5 |
4段目 | 1 | 7 |
5段目 | 0 | 9 |
ヒント3:ロジック的ヒント
ヒント1,2を通して、上部三角形を作るためのロジック的ヒント
ループ①:5段までを繰り返す処理
ループ②:各段のスペースをコンソールに表示するための繰り返し処理
ループ③:各段の*をコンソールに表示するための繰り返し処理
改行をする処理
ヒント4:下の逆三角形を作る。
下逆三角形の4行を作る。
ヒント5:下の逆三角形を作る。
スペースの数 | *の数 | |
1段目 | 1 | 7 |
2段目 | 2 | 5 |
3段目 | 3 | 3 |
4段目 | 4 | 1 |
ヒント6:ロジック的ヒント
ヒント4,5を通して、下部逆三角形を作るためのロジック的ヒント
ループ①:4段までを繰り返す処理
ループ②:各段のスペースをコンソールに表示するための繰り返し処理
ループ③:各段の*をコンソールに表示するための繰り返し処理
改行をする処理
答え
答え
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
for i in range(0, 9):# iは行のi番目 if i < 5: # 5までは反復門が同じから、5まで分離してifを書く for j in range(4 - i, 0, -1):# jは空白の数 →空白はどんどん減るから範囲を反対に書く print(" ", end = "") for k in range(0, 2 * i + 1):# kは*のかず →*はどんどん増えるから範囲を元に書く print("*", end = "") print() else: # if外の範囲に対しての式 for l in range(4, i):# lは空白の数 →空白はどんどん増えるから範囲を元に書く print(" ", end = "") for m in range(9 - 2 * (i - 4), 0, -1):# mは*の数 →*はどんどん減るから範囲を反対に書く print("*", end = "") print() |
2.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
cnt = 1 # 変数設定 for i in range(0, 9): if cnt < 9 and i < 5: for j in range(0, 4 - i): print(' ', end='') else: for j in range(0, i - 4): print(' ', end='') for z in range(0, cnt): print('*', end='') print() if cnt < 9 and i < 5: cnt += 2 else: cnt -= 2 |
コメント