【Python二次元リスト】IF文と論理積and、論理和orで、「市松模様」のドット絵を作成

この記事を読むことによって、

内包表記の二重ループ

論理演算子のandとorの使い所

上記によってPythonで市松模様のドット絵を描画

の概要を掴めます。

主に、Pythonの二重ループを学習中で、規則的で簡単なドット絵を描きたい方を対象にしています。

題材は、1つおきに色が塗りつぶされている市松模様です。
Excelで完成形を作成致しました。

この図を見ての通り、2で割り切れる行 and 2で割り切れる列の所に色が塗りつぶされています。
また、2で割り切れない行 and 2で割り切れない列の所に色が塗り潰されています。

これをPythonで作って行きます。
まずは、この様な枠線のみを作成致します。

ここでは最初に内包表記を使ってリスト(配列)の全ての要素に「□」で埋めます。
10行10列の□を取り出すには、リストarrayを行ごとに取り出す変数line、lineからドットごとに取り出す変数dotを使った二重ループで、内ループの所で改行することによって、次の行に行く前に改行をしています。

#市松模様の二次元リストを内包表記で作成
array=[['□' for i in range(10)] for j in range(10)]

#ドット絵の取り出し
for line in array:
  for dot in line:
    print(dot,end='')
  print()

実行結果です。

では、これを一つ置きに「■」に置き換えて行きます。

リストは0行0列から始まります。
このリストarrryは1番最初がarray[0][0]、1番最後がarray[9][9]です。
そこで、一つ置きになるように、IF文の中で論理演算子のand と or を使い、
「2で割り切れる行 and 2で割り切れる列」 or
「2で割ると1余る行 and 2で割ると1余る列」を「■」にします。

#市松模様の二次元リストを内包表記で作成
array=[['□' for i in range(10)] for j in range(10)]

#市松模様の1つ置きに■を格納(i,j共に偶数・i,j共に奇数の時に■)
for i in range(len(array)):
  for j in range(len(array[0])):
    if(i%2==0 and j%2==0) or (i%2==1 and j%2==1):
      array[i][j] = '■'

#ドット絵の取り出し
for line in array:
  for dot in line:
    print(dot,end='')
  print()  

実行結果です。

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

柏市にある、あけぼの山農業公園のひまわりです。

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

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

Python自作サンプル集へ戻る

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

【Pythonループ】ループとIF文の中の論理演算子「or」で、「3時のヒロイン」さん登場!!

この記事は、Pythonのループで、「3時のヒロイン」さん(郷ひろみさんと一緒に「にしたんクリニック」のCMに出演している、吉本興業所属の芸人さん)を例に、

・ループの中でIF文と論理演算子or(または)を使う

・3時 or 15時の時にメッセージを表示する


・strで数字を文字列と一緒に表示する

・「\n」で改行する

とったコードを掲載して、解説しております。

3時のヒロインさんのプロフィールです。

このCMですね。
「♪ た〜ん、たん、にしたん、たんたんた〜ん」
タンバリンを持って踊っている所が可愛いです。


そこで、Pythonでループを使って、3時と15時の時に3時のヒロインさんに登場して頂きます。

このループでは、range(24)で0時から23時まで表示させます。
ループ内の変数はhourを用います。

論理演算子のorを使って、hourが3時 or 15時の時にprint文に3時のヒロインさんを登場させるといった、シンプルなループになっています。

#3時と15時に「3時のヒロイン」さん登場!!
for hour in range(24):
  if hour==3 or hour==15:
    print("<<<【"+str(hour)+"時】のヒロインさん登場>>>\n")
  else:
    print(str(hour)+"時")

実行結果です。


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

スカイツリーと河津桜のコラボです。
このライティングは日向坂46の楽曲、『JOYFUL LOVE』の虹色のカラーです。
3時のヒロインさんは、日向坂46四期生の冠歌番組「ひなパレ」のMCを務めました。

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

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

Python自作サンプル集へ戻る

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

【Python関数でジャンケンゲーム】乱数の扱い方など

この記事を読むことで、

・乱数を使った簡単なじゃんけんゲームが作れる

・標準入力


・論理演算子 OR

IF文を使った勝敗分岐の復習

についての概要が掴めます。

ルールとして、
1:グー 2:チョキ 3:パー で、変数youに半角数字で標準入力を使って入力をします。

コンピューターは、1〜3までの乱数を求めて変数pcに代入します。
乱数の算出と表示をするコードはこちらになります。

#乱数を使う為、ランダムモジュールをインポートする
import random

#乱数pcの範囲を1から3までとする
pc=random.randint(1, 3)
print(pc)

これで乱数が求まりました。

次に、あなたの手を標準入力します。

#標準入力で、あなたの出す手を決める
print("じゃんけんの手を半角数字で「1:グー  2:チョキ  3:パー」 >>>",end="")
you=int(input())

これで、半角で数値が入力出来るようになり、1から3までがそれぞれジャンケンの手に対応しています。

勝敗の判定をIF文で行っています。

#勝敗の判定
if you == pc:
    msg="あいこです。"
elif you == pc -1 or you == pc +2:
    msg="YOU WIN!!!!!!"
else:
    msg="YOU LOSE...."

print(msg)

まず、一番簡単なのが「あいこ」の時なので、最初に書きます。
次にあなたがコンピューターに勝つ場合は、

・グー(1) VS チョキ(2)…. youはpcより1小さい

・チョキ(2) VS パー(3)…. youはpcより1小さい

・パー(3) VS グー(1) …. youはpcより2大きい

の場合です。

つまり、youがpcよりも1小さいか、2大きい時にあなたの勝ちとなります。
または、に当たりますので、IF文の中でORを使っています。

ここまでのコードをまとめてみます。

#乱数を使う為、ランダムモジュールをインポートする
import random

#乱数pcの範囲を1から3までとする
pc=random.randint(1, 3)
print(pc)

#標準入力で、あなたの出す手を決める
print("じゃんけんの手を半角数字で「1:グー  2:チョキ  3:パー」 >>>",end="")
you=int(input())


#勝敗の判定
if you == pc:
    msg="あいこです。"
elif you == pc -1 or you == pc +2:
    msg="YOU WIN!!!!!!"
else:
    msg="YOU LOSE...."

print(msg)

ここからは、このジャンケンの部分を関数にしていきます。
コンピュータが出す手の乱数とその手の表示、勝敗分岐まで関数に記述しました。

関数Comuter_Handの仮引数youは、標準入力であなたが入力した1〜3までの半角英数字が入ります。

#コンピューターの出す手の関数
def Computer_Hand(you):

  #乱数pcの範囲を1から3までとする
  pc=random.randint(1, 3)
  print(pc)

  #コンピューターの出した手
  if pc==1:
    print("PC:グー") 
  elif pc==2:
    print("PC:チョキ")
  else:
    print("PC:パー")

  #勝敗の判定
  if you == pc:
    msg="あいこです。"
  elif you == pc -1 or you == pc +2:
    msg="YOU WIN!!!!!!"
  else:
    msg="YOU LOSE...."
  return msg

この関数を呼び出すのは、あなたが標準入力でジャンケンの手を入れてからです。
戻り値として勝敗結果のmsgを呼び出し元に返します。

#標準入力で、あなたの出す手を決める
print("じゃんけんの手を半角数字で「1:グー  2:チョキ  3:パー」 >>>",end="")
you=int(input())

judge=Computer_Hand(you)

関数Computer _Handの引数をyouとして呼び出しています。
戻り値として帰ってきた勝敗結果がjudgeに代入されます。


ジャンケンコードの全体と実行結果です。

#乱数を使う為、ランダムモジュールをインポートする
import random

#コンピューターの出す手の関数
def Computer_Hand(you):

  #乱数pcの範囲を1から3までとする
  pc=random.randint(1, 3)
  print(pc)

  #コンピューターの出した手
  if pc==1:
    print("PC:グー") 
  elif pc==2:
    print("PC:チョキ")
  else:
    print("PC:パー")

  #勝敗の判定
  if you == pc:
    msg="あいこです。"
  elif you == pc -1 or you == pc +2:
    msg="YOU WIN!!!!!!"
  else:
    msg="YOU LOSE...."
  return msg


#標準入力で、あなたの出す手を決める
print(" じゃんけんの手を半角数字で「1:グー  2:チョキ  3:パー」 >>>",end="")
you=int(input())

judge=Computer_Hand(you)
print(judge)


いきなり負けました(笑)

今度こそは!!

やった、勝った♪

最後はあいこで。


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

東京モノレールです。
羽田空港第二ターミナルまで行きます。

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

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

Python自作サンプル集へ戻る

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