この記事を読むことで、
二次元配列とループとIF文を組み合わせ
ループの中でenumerate関数を使用
上記によりPythonでドット絵を描画
が可能になります。
今回書くドット絵は、ラブアンドピースと言うことで、ハートマークにします。
配列の要素が1だったら「●」、0だったら「半角スペース」をドットとして出力します。
二次元リストを扱うので、最後の列の所まで行ったらドットを出力した後に改行します。
要素の中身(ドット)と、リストの添字(i,j)を扱うので、enumerateを使います。
リストの最後の要素は、リストの添字が0から始まるので、リストの長さ-1になります。
jがリストの長さ-1になりましたら、ドットを出力した後に改行をします。
元になる、二次元配列「Heart」です。
Heart=[
[0,1,1,0,0,0,0,0,1,1,0],
[1,0,0,0,1,0,1,0,0,0,1],
[1,0,0,0,0,1,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,1],
[0,1,0,0,0,0,0,0,0,1,0],
[0,0,0,1,0,0,0,1,0,0,0],
[0,0,0,0,0,1,0,0,0,0,0]
]
実行結果とコードです。
リストの「列の」長さは下記のように求めます。
Heart[0]としているのは、リストの長さは各行同じなので、リストHeartの1行目の、
すなわちHeart[0]の長さを求めます。
リストの添字が0から始まるので、このように-1しています。
num=len(invader[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(' ')
ここまでの全コードと実行結果は、この様になります。
#ハートマークのドット絵の元になる二次元リスト
Heart=[
[0,1,1,0,0,0,0,0,1,1,0],
[1,0,0,0,1,0,1,0,0,0,1],
[1,0,0,0,0,1,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,1],
[0,1,0,0,0,0,0,0,0,1,0],
[0,0,0,1,0,0,0,1,0,0,0],
[0,0,0,0,0,1,0,0,0,0,0]
]
num=len(Heart[0])-1
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(' ')

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

隅田公園の梅の花です。
ご精読ありがとうございました。
■ 独習Python ■
Kindle版
単行本(ソフトカバー)