Pythonで文字「G」のパターンを出力するプログラム
コンソールにアスタリスク(*)を使って文字「G」のパターンを表示したい場合、専用の関数を定義し、二重ループ(ネストされたループ)で行と列を走査しながら、条件に合致する位置だけ「*」を出力する方法が有効です。
以下に実際の実装例を示します。
サンプルコード
def display_pattern(my_line):
my_pattern = ""
for i in range(my_line):
for j in range(my_line):
if ((j == 1 and i != 0 and i != my_line - 1)
or ((i == 0 or i == my_line - 1) and j > 1 and j < my_line - 2)
or (i == (my_line - 1) // 2 and j > my_line - 5 and j < my_line - 1)
or (j == my_line - 2 and i != 0 and i != my_line - 1 and i >= (my_line - 1) // 2)):
my_pattern += "*"
else:
my_pattern += " "
my_pattern += "\n"
return my_pattern
num_line = 8
print("パターンGは以下の通りです :")
print(display_pattern(num_line))実行結果
パターンGは以下の通りです : **** * * * *** * * * * * * ****
コードの解説
行数を引数として受け取る関数「display_pattern」を定義します。
外側のループで行(縦方向)、内側のループで列(横方向)を順番に走査します。
各マスについて、「左側の縦棒」「上下の横棒」「中央の横棒」「右下の縦棒」のいずれかに該当するかを条件式で判定し、該当すれば「*」を、そうでなければ空白を文字列に追加します。
1行分の走査が終わるごとに改行コードを追加し、すべての行が完成した時点でパターン文字列を返します。
最後に、行数として8を指定して関数を呼び出し、その結果をコンソールに出力します。
ポイント
この手法のポイントは、Gの字形をいくつかの条件に分解して表現している点です。具体的には、次の要素を組み合わせています。
上端と下端の横棒:i == 0 または i == my_line - 1 の行に該当する列へ「*」を配置
左側の縦棒:j == 1 の列に「*」を配置
中央付近から伸びる横棒:i == (my_line - 1) // 2 の行に「*」を配置
右側下半分の縦棒:j == my_line - 2 の列に「*」を配置
引数の行数を変更すれば、同じロジックのまま大きさの異なるGのパターンを描画できます。また、中央行の判定には整数除算演算子(//)を使用することで、奇数・偶数どちらの行数でも正しく中央が判定され、意図したとおりの字形になります。
-
Pythonでパターンを出力する方法|三角形・数字・アルファベット・ピラミッドのコード例
Pythonでパターンを出力するには、ネストされた(入れ子構造の)forループを使用します。外側のループで行数を制御し、内側のループで列数を処理します。そしてprint文を工夫することで、目的に応じたさまざまなパターンを作成できます。パターンには、星(アスタリスク)パターン、数字パターン、アルファベットパターンなどがあり、三角形やピラミッドなど、さまざまな形状にも対応できます。パターン出力の基本これらのパターンは、print文を少し変更しながらforループを組み合わせることで出力できます。基本的な考え方はどのパターンも共通しており、違いはごくわずかです。ここからは、代表的なパターンのコードを実
-
NumPyを使ってn×nのチェッカーボード(市松模様)パターンを出力するPythonプログラム
nの値が与えられたとき、n×nの行列に対してチェッカーボード(市松模様)パターンを表示するのが本記事の目的です。 NumPyには、初期値を指定して配列を作成できるさまざまな関数が用意されています。NumPyはPythonにおける科学技術計算の基盤となるパッケージであり、数値配列の生成や操作を高速かつ簡潔に記述できます。 アルゴリズム ステップ1: 行列の次数nを入力する。 ステップ2: zeros((n, n), dtype=int) を使って n×n のゼロ行列を作成する。 ステップ3: スライシングのテクニックを使い、交互の行と列に 1 を代入する。 ステップ4: 行列を表示する。 ス