【Pythonループ・内包表記】リストの並べ替え|V6の名曲を例にリストの昇順と降順の並べ替えをしてみました。

この記事を読むことで、

・Pythonのループの基礎

・内包表記


・ループを使ってリストに要素を追加する


・上記の内包表記と二乗


・リストの並べ替え(昇順・降順)

についての理解を深められます。

まず基本的な論点を学習してから、V6の名曲を例にリストにして、昇順、降順を行っています。


まずは、初歩的なループと内包表記の対応付けと言う、ごくごく基礎から入って行きます。

0から9まで表示するシンプルなループです。
range(10)となっているので10未満の数が表示されます。

for i in range(10):
  print(i)

結果はこの様になります。

このコードを内包表記を使うとたった1行で書ける様になります。
内包表記の書式はこの様になります。

[結果 for文]

それでは内包表記で書いていきます。

[print(i) for i in range(10)]

出力結果を改行せずに、リストとして表示したい場合を基礎的なfor文で書いたコードと実行結果です。

#空のリスト
array=[]

#基礎的なループで空のリストarrayに要素を追加する
for i in range(10):
  array.append(i)

#結果出力
print(array)

このコードをもっと短くした内包表記のコートとの対応です。
print文の中にリストの[ ]を使っています。

#内包表記でリストに要素を加えて表示する
[print([i for i in range(10)])]

次は内包表記を用いて計算を致します。
この配列の要素それぞれの二乗を求めます。

#内包表記でリストに二乗をした要素を加えて表示する
[print([i**2 for i in range(10)])]


内包表記に慣れてきた所で、計算用リストを使います。
計算用リストarrayの要素をそれぞれ二乗しています。

#計算用リスト
array=[1,3,5,7,9,11,13,15]

#[計算式 for in リスト]
print([i**2 for i in array])


リストを使った内包表記にも慣れて来た頃で、いよいよV6の名曲リストを作成します。

メンバーは
トニセン(年長3人):坂本昌行、長野博、井ノ原快彦
カミセン(年少3人):森田剛、三宅健、岡田准一
で、私はトニセンとカミセンの間の年齢なので、感慨深いものがあります。

リスト名は、そのまま「V6」にします。
ループの変数として、これまで「i」を使っていた箇所を「song」にします。

#V6の中で特に私が好きな曲
V6=['MUSIC FOR THE PEOPLE',
'愛なんだ',
'WAになっておどろう',
'Darling',
'CHANGE THE WORLD',
'Orange',
'BEAT YOUR HEART',
'MADE IN JAPAN',
'Believe Your Smile',
'Be Yourself!'
]

#[計算式 for in リスト]
[print(song) for song in V6]

結果を表示します。


曲名を昇順にしたい時は、

リスト名.sort()

を追記します。

#V6の中で特に私が好きな曲
V6=['MUSIC FOR THE PEOPLE',
'愛なんだ',
'WAになっておどろう',
'Darling',
'CHANGE THE WORLD',
'Orange',
'BEAT YOUR HEART',
'MADE IN JAPAN',
'Believe Your Smile',
'Be Yourself!'
]

#昇順
V6.sort()

#[計算式 for in リスト]
[print(song) for song in V6]

逆にリストを降順にしたい時は

リスト名.sort(reverse=True)

と改変します。

#V6の中で特に私が好きな曲
V6=['MUSIC FOR THE PEOPLE',
'愛なんだ',
'WAになっておどろう',
'Darling',
'CHANGE THE WORLD',
'Orange',
'BEAT YOUR HEART',
'MADE IN JAPAN',
'Believe Your Smile',
'Be Yourself!'
]

#降順に改変
V6.sort(reverse=True)

#[計算式 for in リスト]
[print(song) for song in V6]

宜しかったらコピペしてアレンジしてみて下さい。

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

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

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

■ 独習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自作サンプル集へ戻る

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

【paizaレベルアップ問題集】PythonとGAS両方で解いたコード紹介集トップページ

このコーナーでは、プログラミング学習コンテンツpaizaラーニングレベルアップ問題集を、PythonとGAS(Google Apps Script)の両方で同じ問題を解いたコードを公開している学習ログです。

Python・GASのどちらの言語のコードも可能な限り詳細に解説致します。
GASはスプレッドシートのエディタを使ってコードを書いております。

paizaでは、【スキルチェック】のブログ掲載は禁止されていますが、【レベルアップ問題集】のコードの公開、ユーザ同士で教え合うことや研修の教材に利用することは自由としていると書かれていました。
paizaレベルアップ問題集のリンク

Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。paiza.ioの使い方はこちらから。

(入会するか否かは問題集を解いて見てからの読者様のご判断にお任せ致します。
どちらの選択をされても記事を読めるようになっておりますので、安心して下さい。)


■ STEINS ;GATE Dランクレベル ■

正則表現のエントリーポイント Python3編

■ 標準入力メニュー ■

標準入力その1

標準入力その2

標準入力その3

標準入力その4



■ 標準入力メニュー5 ■

1 つの整数の入力 Python3編


2 つの整数の半角スペース区切りの入力 Python3編

5 つの整数の半角スペース区切りの入力 Python3編

10 個の整数の半角スペース区切りの入力 Python3編

【整数の半角スペース区切りの入力】1,000個の整数の半角スペース区切りの入力 Python3編


■ 標準入力メニュー6 ■

改行区切りでの N 個の整数の入力 Python3編

2 行目で与えられる N 個の整数の入力 Python3編

1 行目で与えられる N 個の整数の入力 Python3編

2 行目で与えられる N 個の整数の入力 (large) Python3編

【N 個の整数の入力】1 行目で与えられる N 個の整数の入力 (large) Python3編


■ 標準入力メニュー7 ■

改行区切りでの N 個の文字列の入力 Python3編

2 行目で与えられる N 個の文字列の入力 Python3編

1 行目で与えられる N 個の文字列の入力 Python3編


■ ループメニュー 1の1 ■

ある数字までの出力 1 Python3編

ある数字までの出力 2 Python3編

数字の受け取り 1 Python3編

数字の受け取り 2 Python3編

ある数をある回数表示 1 Python3編

ある数をある回数表示 2 Python3編

FINAL問題 a ~ z までを表示


■ループメニュー1の2 ■

数列の和 Python3編

数列の A 番目から B 番目までの和

数列の値を全部 * 2 して出力 Python3編

FINAL問題 数列同士の引き算 Python3編


■ ループメニュー1の3 ■

数列の反転 Python3編

九九の表示 1 Python3編

九九の表示 2 Python3編

2 の累乗を表示 Python3編

FizzBuzz Python3編


■ ループメニュー1の4 ■ 

数列の最大値 Python3編

数列の最小値 Python3編

数列の何番目にある? Python3編

数列の中に何個ある? Python3編


■ ループメニュー2の1 ■

未知数個の数の受け取り Python3編

未知数個の文字列の受け取り Python3編

奇数だけ出力 Python3編


割り切れる数だけ出力 Python3編

偶奇の判定 Python3編


ループメニュー2の2 ■

各桁の和 Python3編

カウント変数を使った計算 Python3編

2 で何回割れる? Python3編

任意の数で何回割れる? Python3編

10 進数から 2 進数に変換 Python3編

10 進数から M 進数に変換 Python3編

N が M ずつ増えたときにいつ K を越える? Python3編

毎日増加するお金 Python3編

階乗の計算 Python3編

階乗の末尾に 0 はいくつ付く? Python3編

加算された数列の最大値 Python3編

加算された数列の最小値 Python3編

1 はどこにある? Python3編

約数の個数 Python3編

約数の列挙 Python3編

ご精読有難うございました。

■ GASの入門書の紹介です ■

詳解! Google Apps Script完全入門 [第3版]
単行本
Kindle版(電子書籍)

■ 関連記事 ■

初めてのGASへ
Python自作サンプル集へ


自己紹介

【Pythonリスト基礎】長さlenで国内旅行気分でランダムに!!

この記事を読むことによって、国内旅行を例に

・リスト(配列)の基礎

・リストの長さを調べるlen

・リストの要素を取り出し

・乱数と組み合わせて旅行先を表示する

Pythonのリストの初歩的な扱いが可能になります。

リストは団地に似ているのかも知れません。

[‘北海道’,’東京’,’名古屋’,’大阪’,’兵庫’,’沖縄’]

団地の0号室が北海道、1号室が東京・・・5号室が沖縄です。
この階の部屋の長さは0〜5号室までの6です。
ポイントは、最初の部屋は0号室だということです。

これは、リストが0から始まるからです。
このリストをtravelとして、早速コードを書いていきます。

travel=['北海道','東京','名古屋','大阪','兵庫','沖縄']
print(travel[0]) #先頭の「北海道」
print(travel[1]) #その次の「東京」
print(travel[5]) #最後の「沖縄」

実行結果です。

リストの番号を添字と言います。
この例で言うと、北海道の添字は0、沖縄の添字は5になり、先ほどの部屋が何号室かという例と対応しております。

次に、この配列の長さを求めるlenを使ってみます。

travel=['北海道','東京','名古屋','大阪','兵庫','沖縄']
print(travel[0]) 
print(travel[1]) 
print(travel[5]) 

#配列の長さを求めるlen
print(len(travel))

実行結果です。

では、リストの部屋番号(添字)をランダムにして、どこに旅行するのかくじ引き感覚でコードを書いて行きます。

リストの添字をランダムにして、変数indexに格納します。

#ランダムモジュール
import random

#国内旅行のリスト
travel=['北海道','東京','名古屋','大阪','兵庫','沖縄']

#添字indexをランダムにする
index=random.randrange(0,len(travel))

#結果表示
print("添字は"+str(index)+"なので【"+str(travel[index])+"】に行こう!!")

実行結果です。

この、乱数を求める部分のコードですが、

#添字indexをランダムにする
index=random.randrange(0,len(travel))

randrangeによって、0から6未満の乱数を求めています=長さが6
これをrandintにしてしまうと、0から6までになり=長さが7

乱数が6になった時にエラーが表示されます。

#ランダムモジュール
import random

#国内旅行のリスト
travel=['北海道','東京','名古屋','大阪','兵庫','沖縄']

#添字indexをランダムにする← ここをrandintにすることによりエラー発生
index=random.randint(0,len(travel))

#結果表示
print("添字は"+str(index)+"なので【"+str(travel[index])+"】に行こう!!")


このコードでも、乱数が5まででしたら先ほどのrandrangeの時と同じように旅先が表示されるのですが、6になるとこの様なエラーになりました。



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

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

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

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

Python自作サンプル集へ戻る

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

【Python で占いゲーム】今日の運勢は??randintで星座占い♪

この記事では、

・乱数を使って星座を占う

・randintで1から12までの乱数を生成する

・if、elif、elseの分岐


・改行「 \n 」の使い方

について学べます。

私は「おうし座」ですので、変数seizaのところに「おうし」と入れました。
ここにあなたの星座やお好きな星座を入れてみて下さい。

まずは、乱数を使った順位の結果のみのコードを掲載いたします。

import random

seiza="おうし"

#1から12までの変数を生成
num=random.randint(1,12)

print("今日の"+seiza+"座は"+str(num)+"位です")

実行結果です。

乱数なので、実行する度に順位が変わります。
最後のprint文のところで、文字列の中で数値である順位のnumを扱う場合には、str(num)としています。

randintと似たようなもので、randrangeがありますが、これはrandom.randrange(1,12)の様に書いた場合には、12「未満」になります。

次に、順位に応じてメッセージを表示する様に、if,elif,elseで分岐を行います。
メッセージは変数msgに格納します。

では、コードです。

import random

seiza="おうし"

#1から12までの変数を生成
num=random.randint(1,12)

print("今日の"+seiza+"座は"+str(num)+"位です")

if num==1:
  msg="超超超超超超超超超・・・おめでとう!!\n"
elif num<=3:
  msg="チョベリグ!\n"
elif num<=9:
  msg="ふつー\n"
elif num==11:
  msg="チョベリブ!\n"
else:
  msg="がび〜〜〜〜〜〜ん\nチョベリバ(涙)\n"

print(msg)

実行結果です。

演算子についてですが、
例えば「num==1」とイコールを2つ書くことによって、その順位(1位)と等しいということを表しています。
=と、一つだけだと代入になりますので。

elif文のnum<=3は3位以下(この場合、2位と3位)を表しています。
elseでそれ以外(この場合12位)です。

msgの中の「\n」バックスラッシュとnで、改行を表しております。

宜しかったら上記のコードをコピペしてアレンジしてみて下さい。


msgの所で「チョベリなんとか・・・」ってありますけれど、かつて「コギャル」と呼ばれた方が女子高生だった頃に流行った言葉です。

チョベリグ・・・超ベリーグッド
チョベリブ・・・超ベリーブルー
チョベリバ・・・超ベリーバッド

だったかな。懐かしいな。


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

千葉県柏市、あけぼの山農業公園のひまわりです。

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

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

Python自作サンプル集へ戻る

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

【Pythonで割り算ゲームと関数】Adoさんの半端ならK.O…「踊♪」で剰余演算子を習得

この記事を読むことで

・割り算を使った簡単なゲームの作成

・関数と剰余演算子の使い方

・IF文による割り算の結果と勝敗の分岐

・標準入力の使い方

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

割り算ゲームの題材として、歌い手のAdoさんの「踊」の歌詞を用います。
半端(=割り切れない時)ならK.O.されちゃいます(笑)


半端、つまり、割り算をして割り切れなかったら負け、割り切れたら勝ちという割り算ゲームを格闘ゲームをイメージして作りました。
余りが0で割り切れたなら勝ち、余りが出たら負けです。

ここで被除数(割られる数)を「9」とします。
変数は「dividend」を用います。

次に除数(割る数)を「2」とします。
変数は「divisor」を用います。

余りの変数を「remainder」とします。
ここで剰余演算子「%」を使用します。

#計算結果から余りを算出
remainder=dividend % divisor


余りは1になり、勝負は「負け」です。

勝敗結果の「負け」を変数「msg」に代入します。

#dividendは被除数(割られる数)
dividend=9

#divisorは除数(割る数)
divisor=2

#計算結果から余りを算出
remainder=dividend % divisor

#割り切れるかどうかの判定
if remainder==0:
  msg="YOU WIN!!!!!!!!!!!!!!!!!!!\n"
else:
  msg="YOU LOSE.....\n"

print(msg)

実行結果です。

あー、負けちゃいましたね。
では、

ここで被除数(割られる数)の変数「dividend」を「8」、
次に除数(割る数)の変数「divisor」を「4」とします。

今度は余り「remainder」が0になるので、msgには「勝利」のメッセージが代入されます。

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

#dividendは被除数(割られる数)
dividend=8 # ←変更

#divisorは除数(割る数)
divisor=4 # ←変更

#計算結果から余りを算出
remainder=dividend % divisor

#割り切れるかどうかの判定
if remainder==0:
  msg="YOU WIN!!!!!!!!!!!!!!!!!!!\n"
else:
  msg="YOU LOSE.....\n"

print(msg)


今度は、標準入力を使って、自在に数を指定出来るように致します。

#dividendは被除数(割られる数)を入力
print("dividend被除数(割られる数)を入力して下さい>>>",end='')
dividend=int(input()) # ←標準入力に

コードと実行結果です。
標準入力で指定して、12を4で割っているので、この勝負は勝ちです!

print('♪ 半端ならK.O......\n') #まずは歌って♪

#dividendは被除数(割られる数)を入力
print("dividend被除数(割られる数)を入力して下さい>>>",end='')
dividend=int(input()) # ←標準入力に

#divisorは除数(割る数)
print("divisor除数(割る数)を入力して下さい>>>",end='')
divisor=int(input()) # ←標準入力に

#計算結果から余りを算出
remainder=dividend % divisor

#割り切れるかどうかの判定
if remainder==0:
  msg="YOU WIN!!!!!!!!!!!!!!!!!!!\n"
else:
  msg="YOU LOSE.....\n"

print(msg)

細かい修正ですが、割られる数、割る数、余りを表示させます。
その実行結果です。

print('♪ 半端ならK.O......\n') #まずは歌って♪

#dividendは被除数(割られる数)を入力
print("dividend被除数(割られる数)を入力して下さい>>>",end='')
dividend=int(input()) # ←標準入力に

#divisorは除数(割る数)
print("divisor除数(割る数)を入力して下さい>>>",end='')
divisor=int(input()) # ←標準入力に

#計算結果から余りを算出
remainder=dividend % divisor

print("被除数(割られる数)="+str(dividend))
print("割る数="+str(divisor)+"\n")
print("余り【"+str(remainder)+"】\n")


#割り切れるかどうかの判定
if remainder==0:
  msg="YOU WIN!!!!!!!!!!!!!!!!!!!\n"
else:
  msg="YOU LOSE.....\n"

print(" 果たして勝負の結果は・・・・\n"+msg)

割り切れませんので、余り、半端なのでK.O.されて負けました。


次に、ここまで書いたコードを関数を使ってみます。
標準入力で割られる数、割る数を入力して、それらを引数として関数「dance_div」を呼び出します。

呼び出された「dance_div」の中で仮引数として、割られる数「x」と割る数「y」が入ります。
計算をして数を表示します。
余りによる分岐をして、勝敗結果の変数msgを戻り値として呼び出し元に戻します。

呼び出し元では変数「judgment」に代入します。

関数の部分です。

#割り算してあまりを返す関数
def dance_div(x,y):
  #計算結果から余りを算出
  remainder=x % y

  print(" 被除数(割られる数)="+str(x))
  print(" 割る数="+str(y)+"\n")
  print(" 余り【"+str(remainder)+"】\n")

  #割り切れるかどうかの判定
  if remainder==0:
    msg=" YOU WIN!!!!!!!!!!!!!!!!!!!\n"
  else:
    msg=" YOU LOSE.....\n"
  
  #関数の呼び出し元に代入する
  return msg    

コードと実行結果です。

print('♪ 半端ならK.O......\n') #まずは歌って♪

#割り算してあまりを返す関数
def dance_div(x,y):
  #計算結果から余りを算出
  remainder=x % y

  print("被除数(割られる数)="+str(x))
  print("割る数="+str(y)+"\n")
  print("余り【"+str(remainder)+"】\n")

  #割り切れるかどうかの判定
  if remainder==0:
    msg="YOU WIN!!!!!!!!!!!!!!!!!!!\n"
  else:
    msg="YOU LOSE.....\n"
  
  #関数の呼び出し元に代入する
  return msg    


#dividendは被除数(割られる数)を入力
print("dividend被除数(割られる数)を入力して下さい>>>",end='')
dividend=int(input()) 

#divisorは除数(割る数)
print("divisor除数(割る数)を入力して下さい>>>",end='')
divisor=int(input())

#関数を呼び出して勝敗結果を「judgment」に代入
judgment=dance_div(dividend, divisor)


print("果たして勝負の結果は・・・・\n"+judgment)


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

コスモスの花です。
しながわ花海道で撮影しました。

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

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

Python自作サンプル集へ戻る

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

【Pythonクラス爆速理解!!】「月曜日はウンジャラゲ♪」で、「昭和のギャグ」からクラスが学べちゃうんですョ!!

この記事を読むことで、

・昭和ギャグを通してPythonのクラスの初歩的なコードが書けるようになる

・ロスジェネ世代や中高年のプログラミング学習に馴染みのある例を用いている


・改行の仕方の復習

・内包表記を使ったループの復習

プログラミング初心者で、子どもの頃にTV で「志村けん」さんのギャグを見て笑っていた昭和の方々を対象にしていますが、若い方でも志村けんさんをご存知の方は大勢いらっしゃると思いますので、年齢に関係なくクラスの学習が必要な方はお立ち寄り下さいませ♪

クラス=設計図

インスタンス=クラスという設計図から作られた「具体的な」製品

と説明をすると、なんだか小難しい感じがするので、

クラス… 志村けんさんの「ウンジャラゲ」を例にして、【何】曜日は【ナニナニナニ♪】といったフォーマット

インスタンス… そのフォーマットから作った、

「【月】曜日は【ウンジャラゲ】」、
「【火】曜日は【ハンジャラゲ】」・・・「【日】曜日は【ランラランらランランっ!と言った「具体的な」各曜日ごとの踊り

と捉えると少し分かりやすくなるかもしれないです。

下記の動画は、今回学ぶ「Pythonのクラスの例」として使っているので、お忙しい方も出来れば「最初の1分程度まで(日曜日まで)」を先に見ておいて頂けると、楽しみながらPythonのクラスの理解が深まると思います。
動画右下の歯車マークから再生スピードを2倍速にすると、余計に笑えるかも知れませんヨ!)


では、いよいよプログラムを詳しく見ていきます。
ウォーミングアップとして、最初に志村けんさんのセリフとBGMを出力するコードです。

シンプルなprint文3行です。

#志村けんさんのコールと「ウンジャラゲのBGM」
print('-------------------------------------------')
print('志村けんさん:「さぁ、みんな揃って【ぶわぁぁぁぁぁぁぁっと】参りましょうか!!」')
print('♪・・・BGM・・・\n')

ポイントと言っても、4行目のprint文で改行の「バックスラッシュn」を使っている所ぐらいでしょうか。「バックスラッシュ」はMacをお使いの方は【option】+【¥】で表示されます。Windowsの方はこちらをご参照ください。


では、ここからが本題で、クラスJarageを作って行きます。
まずは、インスタンス化する時に自動的に最初に呼ばれるコンストラクタの部分のコードから書いてきます。

コンストラクタは簡単に書くと、初期化するメソッド(関数)です。
初期化 → 月曜日 → 初期化 → 火曜日 → 初期化 → 水曜日・・・
という具合に呼び出されるので、必ず初期化が必要です。

#クラスJarage
class Jarage:

#コンストラクタで初期化している
  def __init__(self, week, spell):
    self.week = week
    self.spell = spell

selfというのは、呼ばれた月曜日、火曜日・・・の各曜日自体のことです。
weekに曜日を、spellに「ウンジャラゲ」、「ハンジャラゲ」といった歌詞を引数にしています。
クラスで使うメソッド(関数)には「self」が必要です!!

次は、「何曜日」が「ナンジャラゲ」になるのか出力するSongメソッドです。
クラスの中で使う関数をメソッドと呼びます。

#何曜日は何ジャラゲかを出力するSongメソッド
    def Song(self):
      print(self.week+'曜日は、「'+self.spell+'」')

一旦ここまでのクラスJarageのコードをまとめます。

#クラスJarage
class Jarage:

  #コンストラクタで初期化している
  def __init__(self, week, spell):
    self.week = week
    self.spell = spell

  #何曜日は何ジャラゲかを出力するSongメソッド
   def Song(self):
     print(self.week+'曜日は「'+self.spell+'」')

クラスの中にあるSongメソッドを使うのに、

mon=Jarage('月','ウンジャラゲ')

とすると、【月】曜日は【ウンジャラゲ】、と入るようにします。
変数【self.week】に「月(曜日)」、変数【self.spell】に「ウンジャラゲ(歌詞)」が入り、これをリストを使って、各曜日用意します。

次に、月曜日から日曜日までインスタンス化する処理です。この後、各曜日を格納するリストeverydayを、各曜日の英語略で作ります。

#曜日とその歌詞のインスタンスを生成
mon=Jarage('月','ウンジャラゲ♪')
tue=Jarage('火','ハンジャラゲ♪')
wed=Jarage('水','スイスイスイ♪')
thu=Jarage('木','モーリモリ♪')
fri=Jarage('金','キンキラキン♪')
sta=Jarage('土','ギンギラギンのギンギラギンのギンギラギンのギン♪')
sun=Jarage('日','ランラランらランランっ!')

リストはこちらです。

#曜日のリスト
everyday=[mon,tue,wed,thu,fri,sta,sun]

このリストeverydayをループを使って順々にインスタンス化していくコードです。

#ループを使って各曜日のインスタンス化を行う
for day in everyday:
    day.Song()

このループの部分を内包表記で書くと、ループのコードが1行にシンプルに記述出来ました。

#内包表記で各曜日のインスタンス化のループを作成
[day.Song() for day in everyday] 

内包表記の公式
[結果 for いつものFor文 ]


では、クラスJarageの中のSongメソッドをループで呼び出して各曜日ごとに表示します。

これまでのコードに出力文「だいじょぶだぁ」などを加えたコードと、実行結果です。

#志村けんさんのコールと「ウンジャラゲのBGM」
print('\n -------------------------------------------')
print(' 志村けんさん:「さぁ、みんな揃って【ぶわぁぁぁぁぁぁぁっと】参りましょうか!!」')
print(' ♪・・・BGM・・・\n')

#クラスJarage
class Jarage:

  #コンストラクタで初期化している
    def __init__(self, week, spell):
      self.week = week
      self.spell = spell

  #何曜日は何ジャラゲかを出力するSongメソッド
    def Song(self):
      print(' '+self.week+'曜日は「'+self.spell+'」')


#曜日とその歌詞のインスタンスを生成
mon=Jarage('月','ウンジャラゲ♪')
tue=Jarage('火','ハンジャラゲ♪')
wed=Jarage('水','スイスイスイ♪')
thu=Jarage('木','モーリモリ♪')
fri=Jarage('金','キンキラキン♪')
sta=Jarage('土','ギンギラギンのギンギラギンのギンギラギンのギン♪')
sun=Jarage('日','ランラランらランランっ!')

#曜日のリスト
everyday=[mon,tue,wed,thu,fri,sta,sun]


#内包表記で各曜日のインスタンス化のループを作成
[day.Song() for day in everyday] 

print('\n 志村けんさん:「だいじょぶだぁ!!」') 
print(' -------------------------------------------\n') 


最後に練習として、「【猫】曜日は【うんにゃにゃんにゃんにゃん(=^x^=)っm】」を加えます。

これはリストeverydayに「cat」を追加して、「猫(【猫】曜日の猫)」、「【うんにゃにゃんにゃんにゃん(=^x^=)っm】」と引数を2つ指定したオブジェクトを作れば良いだけなので、簡単に改造できそうですね。

追加したコードです。

#猫曜日を追加
cat=Jarage('猫','んにゃにゃにゃにゃんにゃん(=^x^=)mm!')

#曜日リストの末尾に「cat」を追加
everyday=[mon,tue,wed,thu,fri,sta,sun,cat]

追加の実行結果です。

はい、これで無事に「猫曜日」が追加されました!!

・・・いったい自分は何をしているんだろう…。という気にもなりましたが、昭和のギャグも令和でのプログラミングの勉強に繋がっていたってことで。

それではこの追加のコードを含めて、ここまでの全コードを掲載します。

#志村けんさんのコールと「ウンジャラゲのBGM」
print('\n -------------------------------------------')
print(' 志村けんさん:「さぁ、みんな揃って【ぶわぁぁぁぁぁぁぁっと】参りましょうか!!」')
print(' ♪・・・BGM・・・\n')

#クラスJarage
class Jarage:

  #コンストラクタで初期化している
    def __init__(self, week, spell):
      self.week = week
      self.spell = spell

  #何曜日は何ジャラゲかを出力するSongメソッド
    def Song(self):
      print(' '+self.week+'曜日は「'+self.spell+'」')


#曜日とその歌詞のインスタンスを生成
mon=Jarage('月','ウンジャラゲ♪')
tue=Jarage('火','ハンジャラゲ♪')
wed=Jarage('水','スイスイスイ♪')
thu=Jarage('木','モーリモリ♪')
fri=Jarage('金','キンキラキン♪')
sta=Jarage('土','ギンギラギンのギンギラギンのギンギラギンのギン♪')
sun=Jarage('日','ランラランらランランっ!')

#猫曜日を追加
cat=Jarage('猫','んにゃにゃにゃにゃんにゃん(=^x^=)mm!')

#曜日リストの末尾に「cat」を追加
everyday=[mon,tue,wed,thu,fri,sta,sun,cat]


#内包表記で各曜日のインスタンス化のループを作る
[day.Song() for day in everyday] 

print('\n 志村けんさん:「だいじょぶだぁ!!」') 
print(' -------------------------------------------\n') 

今回教材に使った曲は、「植木等 ハナ肇とクレイジー・キャッツの曲」だそうです。


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

しながわ花海道のコスモスです。

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

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

Python自作サンプル集へ戻る

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

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

この記事を読むことで、

・クラスを使った計算の例に、ハッカ油とレモン精油のアロマオイルの値段の計算

・コンストラクタの書き方

・消費税の計算でint関数で小数を切り捨て値段の整数を求める

・インスタンス化

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

具体例として、クラスを使って、アロマオイルの単価×数量×税率から合計金額を計算します。

クラスは「設計図」というイメージで説明されることが多いです。

クラス=設計図

インスタンス=クラスという設計図から作られた「具体的な」製品

と説明をすると、なんだか小難しい感じがするので、

クラス… 【アロマオイルの種類】、【アロマオイルの数量】

インスタンス… そのフォーマットから作った、


【ハッカ油】の【数量】、
【レモンオイル】の【数量】

と言った「具体的な」アロマオイルについて

と捉えると少し分かりやすくなるかもしれないです。

「Aroma」というクラス(設計図)に「money」というメソッド(クラス内で使う関数)を持たせて、アロマという抽象的なものから、「ハッカ油」、「レモン精油」という具体的なもの(インスタンス)を作って計算結果を求めています。

おすすめのハッカ油とレモン精油を購入するイメージでコードを書きました。

ハッカは1本1100円、レモンは1200円で計算しました。
購入数はハッカ油5本、レモン精油4本とします。
消費税は10%で計算します。


では、ここからコードを書いていきます。
まず、クラスは下記のコードで作成します。

class Aroma:

「Aroma」というクラスを作りました。注意点として、クラスの先頭は大文字にします!

クラス内で、消費税率taxを宣言して10%にしました。
税抜価格に1.1をかける計算になります。

tax=1.1

このクラスの中には、先ほど紹介した「money」というアロマの値段を計算するメソッドがあるのですが、「Aroma」というクラス(設計図)を初期化して、「ハッカ油」の値段を計算 → 「ハッカ油」の値段と数量が入っている変数を初期化→「レモン精油」の値段を計算しています。

初期化する為に、「コンストラクタ」という特別なメソッドを使います。
このメソッドがあるので、「ハッカ」→ <初期化> → 「レモン精油」と計算出来ます。

そのため、メソッド「money」の前にコンストラクタを書いています。
コンストラクタはクラスの中で1番先に呼び出されます。

#これは「コンストラクタ」で最初に呼ばれて変数を初期化している
    def __init__(self,price,count):
        self.price=price
        self.count=count

コンストラクタは、「init」を使って書いています。
コンストラクタの書き方をまとめると、上記コードの2行目は、この様な書き方になります。

def (スペース)__(アンダーバー2つ)init__(アンダーバー2つ)

このコンストラクタの中には「self」というものが入っていますが、ここでは簡単に、「ハッカ油自体」、「レモン精油自体」だと思って下さい。

コンストラクタの後に、値段を計算するメソッドmoneyを書きます。
int関数で、小数点以下を切り捨てて整数の値段にしています。

#値段を計算するメソッド
    def money(self):
        return int(self.price*self.count*Aroma.tax)

ハッカ油やレモン精油をクラスを使って計算するのに、クラスという設計図を使って、「ハッカ油」、「レモン精油」の単価と数量を指定して計算します。

そのインスタンス化と出力のコードです。

#インスタンス化
hakka=Aroma(1100,5)
remon=Aroma(1200,4)

#値段を出力。「str」と「+」を使って計算結果と文字列を出力している。
print('【 ハッカ油】は合計【'+str(hakka.money())+'】円です。')
print('【レモン精油】は合計【'+str(remon.money())+'】円です。')

ここまでのコードのまとめと、出力結果です。

class Aroma:

    #消費税
    tax=1.1

    #これは「コンストラクタ」で最初に呼ばれて変数を初期化している
    def __init__(self,price,count):
        self.price=price
        self.count=count

    #値段を計算するメソッド
    def money(self):
        return int(self.price*self.count*Aroma.tax)

#インスタンス化
hakka=Aroma(1100,5)
remon=Aroma(1200,4)

#出力
print('【ハッカ油  】は合計【'+str(hakka.money())+'】円です。')
print('【レモン精油】は合計【'+str(remon.money())+'】円です。')

オススメのアロマです。

ハッカ油
レモン精油

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

富士山と江ノ島です。

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

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

Python自作サンプル集へ戻る

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

【Python関数とデフォルト値】正義のヒーロー「変なおじさん」

この記事を読むことで、

・Pythonの関数で引数に何も指定しない時は、決まった値(デフォルト値)を与える

・関数を複数呼び出して挙動の違いを確認する

といったことの概要が掴める様になります。

今回のコードの具体例として、引数に何も指定しないと「会社員」と表示されます。

例えば引数に「サトウ」さんだけを指定して、職業の所に何も入れないと「サトウさんは会社員です。」と表示されます。

引数の名前の所に「志村けん」さん、引数の職業の所に「変なおじさん」と指定すると、「志村さんは変なおじさんです。」と表示されるプログラムを作りました。

だっふんだ!!

余り上手くないので、似顔絵では無く落書きです。

早速ですが、コードと実行結果を掲載します。
関数Workの所で、デフォルト値の「会社員」を設定しています。

#デフォルト値を指定した関数のWork
def Work(name,job='会社員'):
  print("【"+name+"】さんは【"+job+"】です。")

#関数を色々な例で呼び出し
Work("サトウ")
Work("ヤマダ")
Work("坂本龍馬","幕末の土佐藩士")
Work("ヒガ")
Work("志村けん","変なおじさん")
Work("シマブクロ")
Work("両津勘吉","警察官")

サトウさん、ヤマダさん、ヒガさん、シマブクロさんは、関数Workに名前だけを引数に指定して、職業はデフォルト値の「会社員」と表示されました。

それに対して、坂本龍馬さん、志村けんさん、両津勘吉さん(こちら葛飾区亀有公園前派出所、通称こち亀の両さん)には名前に加えてそれぞれの職業の引数を指定しているので、「幕末の土佐藩士」、「変なおじさん」、「警察官」と表示されたことが確認できました。


突然ですが、皆さまには子供の頃、ヒーローはいましたか?
私のヒーローは志村けんさんで、良く学校で「だいじょぶだぁ」や「変なおじさん」のモノマネをしていて、将来の夢は「変なおじさんになること」でした。
今でも志村けんさんは、私にとって永遠にヒーローです。

全力でバカ殿や変なおじさんなどのギャグをやって下さった姿は、今でも忘れられません。

そこで、プログラミングを学ぶものとして追悼の思いも込めて、Pythonの関数、デフォルト値を使って、変なおじさんを表示してみました。

最後に「バカ殿」のイラストで締めたいと思います。
バカ殿が五郎丸選手のルーティーンをやっていた姿も面白かったです。


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

ちょっと怖可愛い、マクセルアクアパーク品川の、ノコギリエイです。
なんだチミはぁぁぁぁって感じのエイですね(笑)

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

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

Python自作サンプル集へ戻る

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

【ブラウザだけでPython学習】オンラインIDEの紹介

この記事では、

・どのプログラミングが合うか模索中

・忙しくて環境構築している時間が無い


・無料で登録なしで日本語対応しているオンラインIDEを探している

方向けにオンラインのIDEを2つ紹介します。


ブラウザ上でコードを書いてすぐに実行!!
個人的には一番使いやすい所だと思います。

画面は2025年11月現在ですので、時期によっては見栄えや配置が変わっているかもしれません。

使い方はこの画面では右下の「コードを作成してみる(無料)」のボタンを押して、

学習したい言語(Python3)を選ぶとすぐにコードが書けます。

# coding: utf-8
# Your code here!

と書かれた下に、簡単なprint文を書いてみます。

# coding: utf-8
# Your code here!

print('吾輩は猫である。名前はまだ無い。')

すると、実行結果はこの様に出力されました。


次に簡単な足し算の計算をしてみます。

# coding: utf-8
# Your code here!

x=5
y=7
z=x+y

print(z)

出力結果です。

個人的にはpaizaが一番使いやすいからここだけでも良いかな、と思ったのですが、人によって使いやすさの基準は異なりますのでもう一つぐらい紹介いたします。


コードを編集、コンパイル、実行できるオンラインIDE

2025年11月現在、この様な画面になっています。

ここではPythonを選びます。
お好みで右上のお月様マークを押すと、ダークモードも選べる様ですね。

それではPythonを選択すると、左側のエディタには既にprint文が書かれています。

print('Hello world!')

右側のコードを実行で無事に「Hello world!」が出力されたので、文書の中身を日本語に変えてみます。

print('メロスは激怒した。')

右側の実行画面ではこの様に無事に出力されました。


次に簡単な計算を致します。
左側のエディタにこの様なコードを書いてみます。
今度は引き算です。

x=10
y=3
z=x-3

print(z)

右側の実行結果で無事に求まりました。


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

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

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

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

Python自作サンプル集へ戻る

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