この記事を読むことで、
二次元配列とループとIF文を組み合わせ
ループの中でenumerate関数を使用
上記によりPythonでドット絵を描画
が可能になります。
今回書くドット絵は、ギャルマインドで「まじ卍(まんじ)」の「卍」を描いてみます。
配列の要素が1だったら「◆」、0だったら「半角スペース」をドットとして出力します。
二次元リストを扱うので、最後の列の所まで行ったらドットを出力した後に改行します。
要素の中身(ドット)と、リストの添字(i,j)を扱うので、enumerateを使います。
リストの最後の要素は、リストの添字が0から始まるので、リストの長さ-1になります。
jがリストの長さ-1になりましたら、ドットを出力した後に改行をします。
元になる、二次元配列「Manji」です。
(コピペ可能です。)
#卍のドット絵の元になる二次元リスト
Manji=[
[1,1,1,1,1,1,0,0,0,0,1],
[0,0,0,0,0,1,0,0,0,0,1],
[0,0,0,0,0,1,0,0,0,0,1],
[0,0,0,0,0,1,0,0,0,0,1],
[1,1,1,1,1,1,1,1,1,1,1],
[1,0,0,0,0,1,0,0,0,0,0],
[1,0,0,0,0,1,0,0,0,0,0],
[1,0,0,0,0,1,1,1,1,1,1]
]
リストの「列の」長さは下記のように求めます。
Manji[0]としているのは、リストの長さは各行同じなので、リストManjiの1行目、
すなわちManji[0]の長さを求めます。
リストの添字が0から始まるので、このように-1しています。
num=len(Manji[0])-1
numに列-1が入りました。
ループの中でIF分岐を使ってドット絵を書いていきます。
行をi、列をjとしています。
jがnumと等しく無い時(j!=num)、1行分のドットを表示させるので、改行させません。
jがnumと等しい時(j==num)は、ドットを出力してから改行しています。
jがnumと等しくない、and(且つ)、ドットが1の時は「◆」を出力、ドットが0の時は「半角スペースを出力」しています。
jがnumと等しい、且つ、ドットが1の時、0の時はドットの出力後に改行しています。
for i,mark in enumerate(Heart):
for j,dot in enumerate(mark):
if j!=num and dot==1:
print('◆',end='')
elif j!=num and dot==0:
print(' ',end='')
else:
if j==num and dot==1:
print('◆')
elif j==num and dot==0:
print(' ')
ここまでの全コードと実行結果は、この様になります。
#卍のドット絵の元になる二次元リスト
Manji=[
[1,1,1,1,1,1,0,0,0,0,1],
[0,0,0,0,0,1,0,0,0,0,1],
[0,0,0,0,0,1,0,0,0,0,1],
[0,0,0,0,0,1,0,0,0,0,1],
[1,1,1,1,1,1,1,1,1,1,1],
[1,0,0,0,0,1,0,0,0,0,0],
[1,0,0,0,0,1,0,0,0,0,0],
[1,0,0,0,0,1,1,1,1,1,1]
]
num=len(Manji[0])-1
print()
for i,mark in enumerate(Manji):
for j,dot in enumerate(mark):
if j!=num and dot==1:
print('◆',end='')
elif j!=num and dot==0:
print(' ',end='')
else:
if j==num and dot==1:
print('◆')
elif j==num and dot==0:
print(' ')
print()

お疲れ様でした。ブレイクタイムPhotoは、

千葉県 房総半島 外房 御宿の海です。
ご精読ありがとうございました。
■ 独習Python ■
Kindle版
単行本(ソフトカバー)