Python二次元リストで、まじ卍

Python自作サンプル集へ
これからプログラミングを始める方へ
メインメニューに戻る
息抜きに、写真で癒し(=^・^=)

Pythonの進捗状況(私のロードマップ)

おはこんばんにちは!
うにゃうにゃエンジニアの猫です(=^・^=)

昭和生まれが恥ずかしくて言えない言葉のひとつに、
「まじ、卍(まんじ)」があるのではないでしょうか。

私も言えないです。
これだから、おっさん、おばはんは、って反応されそうですし・・・。

という訳で、言えないのだったらPythonの二次元リストで作っちゃえと思って、
ループを使って卍を作りました。

縦13(行番号0~12)、横25(列番号0~24)の二次元リストです。
卍の線が入る所にドルマークを付けました。

なぜドルマークかって言ったら、自分に足りない物の1つだからです。
そういうのはプログラミングで埋めようかなと。

コードはこんな感じです。
Pythonでは改行する所に\(バックスラッシュ)を入れて改行できるとか。
それで、コードが見やすく成ったと思います。

manjimap = [[” ” for i in range(25)] for j in range(13)]

for i,line in enumerate(manjimap):

for j,dot in enumerate(line):
if (i==0 and j<=13) or (i==12 and j>=13) or j==13\
or (j==24 and i<=6) or (j==0 and i>=6) or i==6:
print(“$”,end=””)

else:
print(dot, end=””)

print()

実行結果です。

ここまで読んで下さってありがとうございました。
愛しています。

Python自作サンプル集へ
これからプログラミングを始める方へ
メインメニューに戻る
息抜きに、写真で癒し(=^・^=)

Python二次元配列ドット絵でインベーダーを書いてみた。

この記事を読むことで、ループとIF文を組み合わせて、Pythonでドット絵を描くことが出来ます。
今回扱うドット絵はインベーダーゲームです。


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

要素の中身(ドット)と、リストの添字(i,j)を扱うので、enumerateを使います。
リストの最後の要素は、リストの添字が0から始まるので、リストの長さ-1になります。jがリストの長さ-1だったらドットを出力した後に改行をします。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

おはこんばんにちは!
うにゃうにゃエンジニアの猫です(=^・^=)
年齢バレバレですが、子どもの頃「インベーダーゲーム」というものをやったことがあります。

そのインベーダーのキャラクターを二次元リストを使ってドット絵で描いてみます。

実行結果とコードです。

コードの詳細を見ていきましょう。
まず、ドット絵を表す二次元リストをこのように作りました。

#インベーダーのドット絵の元になる二次元リスト
invader=[
[0,0,1,0,0,0,0,0,1,0,0],
[0,0,0,1,0,0,0,1,0,0,0],
[0,0,1,1,1,1,1,1,1,0,0],
[0,1,1,0,1,1,1,0,1,1,0],
[1,1,1,1,1,1,1,1,1,1,1],
[1,0,1,1,1,1,1,1,1,0,1],
[1,0,1,0,0,0,0,0,1,0,1],
[0,0,0,1,1,0,1,1,0,0,0]
]

リストの「列の」長さは下記のように求めます。
invader[0]としているのは、リストの長さは各行同じなので、リストinvaderの1行目の、すなわちinvader[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,chara in enumerate(invader):
   for j,dot in enumerate(chara): 
        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(' ')


ここまでの全コードは、この様になります。


#インベーダーのドット絵の元になる二次元リスト
invader=[
[0,0,1,0,0,0,0,0,1,0,0],
[0,0,0,1,0,0,0,1,0,0,0],
[0,0,1,1,1,1,1,1,1,0,0],
[0,1,1,0,1,1,1,0,1,1,0],
[1,1,1,1,1,1,1,1,1,1,1],
[1,0,1,1,1,1,1,1,1,0,1],
[1,0,1,0,0,0,0,0,1,0,1],
[0,0,0,1,1,0,1,1,0,0,0]
]

#インベーダーの二次元リストの列数を求める
num=len(invader[0])-1

#二次元リストの要素が1の時に「■」、0の時は全角スペース
for i,chara in enumerate(invader):
   for j,dot in enumerate(chara): 
        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(' ')

最後までお読みいただきありがとうございました(=^・^=)mm。。。

■ 参考文献の紹介 ■
じっくり丁寧にPythonを学びたい方向けの書籍を紹介します。

Pythonを基礎から中級程度まで丁寧に学びたい方におすすめの書籍です。
まずはpaizaラーニングなどの学習コンテンツで1〜2巡(苦手な所は納得がいくまで何巡でも)してからこの本で学ぶと、自分の学習状況をブログなどでアウトプット出来るようになり、また、エラーなどの不明点を調べられる力もついていきます。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

Pythonのリストと辞書を昇順・降順に並び替え|sortとsortedで[Alexandros]の曲の長さ順に表示

この記事を読むことで、

リストと辞書を昇順・降順に並べ替える

リストを並べ替えるsort

辞書を並び替えるsorted

について学習出来ます。


具体例として、[Alexandros]というバンドの曲の中でも特にお気に入りの曲を用います。

今回使用する曲のリストです。

4:08 ワタリドリ 
3:15 FamousDay
4:27 RunAway
4:46 SNOW SOUND

これをこの様なリストを作ってみました。

DROS=['4:27 RunAway','4:08 ワタリドリ','3:15 FamousDay','4:46 SNOWSOUND']

下記のコードで、このまま出力してみます。
ループを使って見やすくしております。

#曲の入ったリスト
DROS=['4:27 RunAway','4:08 ワタリドリ','3:15 FamousDay','4:46 SNOWSOUND']

print("そのまま出力")
for music in DROS:
  print(music)

このコードの出力結果です。


では、このリストを昇順にします。

DROS.sort()

ここまでのコードと実行結果です。

#曲の入ったリスト
DROS=['4:27 RunAway','4:08 ワタリドリ','3:15 FamousDay','4:46 SNOWSOUND']

print("そのまま出力")
for music in DROS:
  print(music)

#ここでリストを昇順にしている
DROS.sort()

print("【昇順】で出力")
for music in DROS:
  print(music)


次に、このリストを降順にしてみます。
降順の書式はこの様になります。

DROS.sort(reverse=True)

では、降順の出力は、この様に書きます。

reverseはデフォルトでは、Falseになっています。
これをTrueにすることによって、リストを降順にしています。

ここまでのコードと実行結果です。

#曲の入ったリスト
DROS=['4:27 RunAway','4:08 ワタリドリ','3:15 FamousDay','4:46 SNOWSOUND']


print("そのまま出力")
for music in DROS:
  print(music)


#ここでリストを昇順にしている
DROS.sort()

print("【昇順】で出力")
for music in DROS:
  print(music)


#ここでリストを降順にしている
DROS.sort(reverse=True)

print("【降順】で出力")
for music in DROS:
  print(music)

それでは、辞書での並び替えについて掲載致します。
この様な辞書を作りました。

dict_DROS={'4:27':'RunAway','4:08':' ワタリドリ','3:15':'FamousDay','4:46':'SNOWSOUND'}

まずは、そのまま出力するコードと実行結果です。

#曲の入った辞書
dict_DROS={'4:27':'RunAway','4:08':' ワタリドリ','3:15':'FamousDay','4:46':'SNOWSOUND'}

print("そのまま出力")
for (time,music) in dict_DROS.items():
  print(time,music)

では、同様に辞書を昇順にしてみます。

リストと異なる点はsortedを使うことと、newやitems()も使うことによって昇順にする点です。

new_dict_DROS=sorted(dict_DROS.items())

上記を簡単に書くと、並び替えたい辞書を新しい辞書に代入して、その新しい辞書を出力しています。

コードと実行結果です。

#曲の入った辞書
dict_DROS={'4:27':'RunAway','4:08':' ワタリドリ','3:15':'FamousDay','4:46':'SNOWSOUND'}

print("そのまま出力")
for (time,music) in dict_DROS.items():
  print(time,music)

#ここで辞書を昇順にしている
new_dict_DROS=sorted(dict_DROS.items())

print("【昇順】で出力")
for (time,music) in new_dict_DROS:
  print(time,music)

今度は辞書を降順にしてみます。この様にコードを追記します。
こちらもreverseをTrueにします。

new_dict_DROS=sorted(dict_DROS.items(),reverse=True)

コードと実行結果です。

#曲の入った辞書
dict_DROS={'4:27':'RunAway','4:08':' ワタリドリ','3:15':'FamousDay','4:46':'SNOWSOUND'}

print("そのまま出力")
for (time,music) in dict_DROS.items():
  print(time,music)

#ここで辞書を昇順にしている
new_dict_DROS=sorted(dict_DROS.items())

print("【昇順】で出力")
for (time,music) in new_dict_DROS:
  print(time,music)

#ここで辞書を降順にしている
new_dict_DROS=sorted(dict_DROS.items(),reverse=True)

print("【降順】で出力")
for (time,music) in new_dict_DROS:
  print(time,music)

今度歌ってみたい曲です。

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

千葉県にある房総半島、外房の御宿の海です。
透明度が高い海が魅力ですね。

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

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

Python自作サンプル集へ戻る

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

Pythonのリストで八王子占いと浦和占い

この記事を読むことで、

・Pythonのリストの基礎練習

・リストと乱数の組み合わせ

・IF文の復習

・改行の使い方

・数値と文字列を同時に表示

について占いゲーム感覚で学べます。

今回作るリストは、「八王子(東京の西の方)」と「浦和(埼玉県)」を例にして、
八王子占いと、浦和占いのリストです。

Pythonでリスト(配列)の添え字を乱数にして、「あなたは何八王子か」という
占い診断ゲームを作って行きます。

八王子には、

・西八王子駅
・北八王子駅
・京王八王子駅
・(ふつうの)八王子駅

があります。

以下、プログラムの手順です。

手順
1:乱数を使うためにランダムモジュールをインポートする
2:駅名のリストを用意する
3:リストの要素数(長さを調べる)
4:リストの添字の乱数を発生させて変数indexに代入する
5:結果を「あなたは【北八王子駅】です」などと言った形式で表示させる。

では、各手順ごとに見ていきます。

手順1:乱数を使うためにランダムモジュールをインポートする

import random

手順2:駅名のリストを用意する

station=['西','北','京王','(ふつうの)']

手順3:リストの要素数(長さを調べる)を変数numに格納

num=len(station)

このリストの場合は、要素数の長さが4になります。

手順5:リストの添字の乱数を発生させて変数indexに代入する

index=random.randrange(num)

ここで、randrangeを使うことで0からリストの長さ未満の乱数を発生させます。
この場合、リストの長さが4になりますので、0から3までの乱数が発生します。
リストのインデックスは0から始まりますので、最後の添字はリストの長さ-1になります。


手順5:結果を例えば、「あなたは【北八王子駅】です」と言った形式で表示させる。

print('あなたは【'+str(station[index])+'八王子駅】です。\n')

最後に改行して見やすくなるように、「\n」を入れています。
これは、「バックスラッシュエヌ」と読みます。
バックスラッシュの「\」は、Macでは「option」キーと「¥」を同時に押します。

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

import random

station=['西','北','京王','(ふつうの)']
num=len(station)
index=random.randrange(num)

print('あなたは【'+str(station[index])+'八王子駅】です。\n')

実行結果です。
このようにランダムに何八王子なのか出力されます。


このコードを少しアレンジして、次は埼玉県にある浦和駅占いを作ってみます。
浦和には、浦和駅の他に「浦和」が着く駅名は、

・北浦和駅
・東浦和駅
・西浦和駅
・南浦和駅
・武蔵浦和駅
・中浦和駅
・浦和美園駅

と、こんなにあるんですね。
埼玉あるあるですが、待ち合わせの時は、「何浦和駅なのか」確認が必要です。

そこで、上記の八王子のプログラムを少し変更して、浦和リストのコードを作成します。

変更したのは2点です。
まず、リストです。
長さが8のリストでstation[0],station[1]・・・,station[7]までになります。

station=['東','西','南','北','武蔵','美園','中','(ふつうの)']

先ほどの八王子の例と異なる点は、例えば北浦和、南浦和でしたら、浦和駅の前に「北」とか「南」が付きますが、「浦和美園駅」の場合は「美園」は浦和の後に付きます

その為、添字が5(くどいようですが、リストの添字は0から始まるので、リストの「6番目」である浦和美園駅は、添字は「5」になります。)の時を踏まえて下記の様にIFによる分岐する必要が生じます。

if index==5:#浦和美園駅の場合
  eki='【浦和'+station[index]+'駅】'
else:
  eki='【'+station[index]+'浦和駅】'

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

import random

station=['東','西','南','北','武蔵','美園','中','(ふつうの)']
num=len(station)
index=random.randrange(num)

if index==5:#浦和美園駅の場合
  eki='【浦和'+station[index]+'駅】'
else:
  eki='【'+station[index]+'浦和駅】'

print('あなたは'+eki+'です。\n')

実行結果です。

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

いたばし花火大会2025です。

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

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

Python自作サンプル集へ戻る

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

Pythonで今日のラッキーカラーを乱数で作ってみた

この記事では、乱数を使って今日のラッキーカラーを求める自作のサンプルプログラムを紹介します。

0から70までの乱数を発生させて変数numに格納します。
(7で割った時の余りによって、ラッキーカラーが変わります。)

その乱数numを7で割った余りを変数remに格納して、IF文の中でラッキーカラーを変数colorに格納します。

乱数は、1行目からのimport randomによって使えるようになり、random.randintで発生させたい数字を入力します。

#乱数を発生させる準備
import random

# 変数numに0から70までの乱数を発生させる
num=random.randint(0, 70)

#乱数numを7で割った余りを変数remに格納する
rem=num%7

#numを7で割った余りremによってIF文で分岐させて今日のラッキーカラーを求める
if rem==0:
  color='赤'
elif rem==1:
  color='黄'
elif rem==2:
  color='青'
elif rem==3:
  color='ピンク'
elif rem==4:
  color='グレー'
elif rem==5:
  color='黒'
else:
  color='紫'

#結果の出力 数字をprint文で使う場合はstr(数字の変数)
print("乱数「"+str(num)+"」を7で割った余りは「"+str(rem)+"」です。")
print("今日のラッキーカラーは【"+color+"】です。")    

では、実行して見ます。

何度か実行して見た所、ランダムに数が変わって色が求められました。


これでも動くのですが、分岐が多いので、IFよりもmatchを使った文の方が分かりやすいです。(他の言語でいう、switch文)

import random

num=random.randint(0,70)
rem=num%7

print(rem)

match rem:
    case 0:
    color='赤'

    case 1:
    color='黄'

    case 2:
    color='青'

    case 3:
    color='ピンク'

    case 4:
    color='グレー'

    case 5:
    color='黒'

    case _:
    color='紫'

print("乱数が「"+str(num)+"」で割った余りが「"+str(rem)+"」だにゃん!!") 

print("今日のあなたのラッキーカラーは、【"+color+"】です!(=^ェ^=)")

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

いたばし花火大会2025です。

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

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

Python自作サンプル集へ戻る

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

Python自作サンプル集

「プログラミングをもっとカジュアルに!!」

をコンセプトに、国民的アニメやドラマ、流行や趣味、ギャグなどを取り入れて、Pythonのサンプルプログラムを自作してみました。

Python環境構築(Windows)とHello World

Python環境構築(Mac)とHello World及び計算

乱数で奇数が出たら推しとキッス

乱数randintで星座占い

乱数で今日のラッキーカラーを作ってみた。

IF文で関東人度・関西人度診断チェック

ループの基礎(前半)2ずつ増加、ドラマの名台詞を表示「同情すんなら金をくれ!」

ループの基礎(後半)内包表記とドラマふてほど「宜保愛子じゃない!!」

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

リストの基礎と長さlenで国内旅行気分でランダムに

PythonのリストをループとIF文、enumerate関数でサザエさんキャラを取り出してみた。

リストで八王子占いと浦和占い(埼玉あるあるについても)

うるう年ループ(IF文、Forループ、リストに追加の復習)

リストの内包表記で演算とV6の名曲のソート(ループ基礎の総復習、昇順、降順)

辞書で「サザエさん」のキャラクターを職業別に取り出し

Pythonの辞書をループを用いて「サザエさん」のキャラを取り出す

リストと辞書を昇順・降順に並び替え|sortとsortedで[Alexandros]の曲の長さ順に表示

辞書で日本史のお勉強

辞書で世界史のお勉強

辞書で化学(周期表・元素記号)のお勉強


二次元リスト ドット絵でインベーダーを書いてみた。

二次元リスト ドット絵で市松模様を書いてみた

二次元リストでまじ卍(Python改行も)

【Python関数初心者向け!!】関数を「カレーライス」で覚えて平面図形の面積を求めてみる(長方形、三角形、台形)とプログラミング英語

【Python関数初心者向けの関数ドリル!!】関数を立体図形で使いこなす!ピラミッドを作れ!(立方体・直方体・円柱・三角錐・四角錐・円錐)

円周率で関数の呼び出し、累乗・円の面積・球の体積・円周

半端ならK.O.踊っ(割り算ゲーム)

正義のヒーロー「変なおじさん!」(関数デフォルト値)

ビーファーストBE:FIRSTの平均年齢を辞書、リスト、関数を使って求めてみた



【Pythonクラス爆速理解!!】昭和ギャグから学ぶクラスとインスタンス「月曜日はウンジャラゲ♪」

【Pythonクラス爆速理解!!】「BE:FIRST」のメンバーのプロフィール(名前・出身地・身長)でクラスを学習

【Pythonクラス爆速理解!!】「NiziU」のメンバーカラーでクラスを学習

クラスを使ってアロマオイルの値段を計算する

【Pythonクラスの継承とメソッドのオーバーライド】HiHiJet井上瑞稀さん美 少年 浮所飛貴さんのバク宙

プログラミングのアンケートにご協力頂ける方はこちらのフォームで勉強法など色々と教えて下さい。

Python環境構築からHello Worldまで(Windows)

この記事ではWindowsでのPythonの環境構築について掲載いたします。

また、自分のPCに環境構築をする手間もを省く為に、Web上で無料ですぐにコードが書けるIDEという開発環境もございます。
paizaにもありますし、他にも「ブラウザでプログラミング 無料 IDE」などで検索すると、いくつか見つかりましたので、自分に合いそうなものでしたら続きそうです。

ここからは、自分のPCにPythonの環境構築をする方法を掲載致します。

用意した物は
・Python
・Visual Studio Code
・MS-DOS

です。

PythonはPythonの開発環境を用意しよう(Windows)を参考にインストールしました。
注意点として、「必ずチェックしてください」と書かれてあるところは、必ずチェックしてください。

Visual Studio Codeはこちらからダウンロードしました。

MS-DOSは入っています。

では、Visual Studio CodeにPythonで実際に書いて作ってみます。

まず最初にCドライブの下にフォルダを作ります。
フォルダ名は、「pylesson」にしました。

Visual Studio Code で[Ctrl]+[N]を押して、新しく作ります。
[Ctrl]+[Shift]+[s]で、保存をします。
先ほど作ったフォルダ「pylesson」の中に「hello.py」という名前で保存します。

このように書いていきます。

<1>

コードはこちらになります。

print(“初めてのPython”)
print(“Hello World!!”)
print(“こんな感じで大丈夫かな・・・”)

MS-DOSで、「cd c:/pylesson」とコマンドを打つと、今プログラミングした「hello.py」が入っている「pylesson」に移動します。

「hello.py」が入っているかどうか確認します。
「dir」とコマンドを打ちます。

ありました。

それでは早速実行します。

「python hello.py」とコマンドを打ちます。

無事、実行できました。

Python自作サンプル集へ
これからプログラミングを始める方へ
メインメニューに戻る
息抜きに、写真で癒し(=^・^=)


自己紹介