Python二次元リストのドット絵で【まじ卍】を書いてみた。

この記事を読むことで、


二次元配列とループとIF文を組み合わせ

ループの中でenumerate関数を使用

上記によりPythonでドット絵を描画

が可能になります。

今回書くドット絵は、ギャルな感じで「まじ卍」の「」を描いてみます。

配列の要素が1だったら「■」、0だったら「半角スペース」をドットとして出力します。
二次元リストを扱うので、最後の列の所まで行ったらドットを出力した後に改行します。

要素の中身(ドット)と、リストの添字(i,j)を扱うので、enumerateを使います。

リストの最後の要素は、リストの添字が0から始まるので、リストの長さ-1になります。
jがリストの長さ-1になりましたら、ドットを出力した後に改行をします。

元になる、二次元配列「Manji」です。

#書きかけ

実行結果とコードです。

リストの「列の」長さは下記のように求めます。
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(' ')


ここまでの全コードと実行結果は、この様になります。

#書きかけ

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

千葉県 房総半島 外房 御宿の海です。

ご精読ありがとうございました。

■ 独習Python ■
Kindle版
単行本(ソフトカバー)

Python自作サンプル集へ戻る

写真クリエイターとしての活動
自己紹介

Python二次元リストのドット絵でハートマークを書いてみた。

この記事を読むことで、


二次元配列とループと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版
単行本(ソフトカバー)

Python自作サンプル集へ戻る

写真クリエイターとしての活動
自己紹介