【Pythonループ2つずつ増加・減少】ループで 家なき子「同情すんなら金をくれ!!!!」ドラマの名台詞を表示

この記事を読むことで、

・Python始めたばかりで、ループの書き方ってどうやるのか分からないんだけど・・・。

・Pythonのループで2ずつ増加(1個飛ばし)ってどうやるの?

・逆に減らすのは?

・好きな文字列をループで指定した回数分表示させたい

が理解出来、更に標準入力と組み合わせて学習出来ます。


まずは基本的なループです。
0から19までの数を表示します。

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

このようにrangeで指定する場合は、その数未満の数が対象になるので、0〜19までが表示の対象となります。実行結果です。


次に2つずつの増加のループに書き換えます。
rangeのカッコ内に

range(開始 , 終了(指定の数未満), 増加分)

と書きます。
以下が2つずつ増加するループのコードと実行結果です。

for i in range(0,20,2):
  print(i)


次に数を減らす場合は、

range(開始 , 終了(その数を含まない), 減らす分)

ここでは、30から1までを3ずつ減らすコードと実行結果を記載します。

for i in range(30,0,-3):
  print(i)

3つずつ減らされていることと、0は含まれていないことが確認できました。


では、今度は指定の数だけドラマの名台詞を表示させてみます。

好きな文字列表示に使う具体例は、ドラマの名台詞です。
「同情すんなら金をくれ!」
「僕は死にません!!」

の2つのセリフを使います。


平成の名ドラマ「家なき子」の安達祐実さんのセリフ、「同情すんなら金をくれ!」を、5回表示させます。
Nに表示回数の5、msgにセリフを入れてコードを書いて実行します。

#セリフを表示させる回数
N=5

#ドラマの名セリフ
msg="同情すんなら金をくれ!!"

for i in range(N):
  print(msg)

名セリフが5回出力されました。
あの頃の安達祐実さんの表情が蘇ります(涙)

それで、range(5)は5未満なのに、5回表示されるのは何故?
4回になるのでは・・・。と思われたアナタ、鋭いです!!

print文を下記の様に変更して、ループの変数「i」も同時に表示させてみます。
数値を文字列と一緒に表示する場合は、strを用います。
数字と文字列の間に「:」を「+」で連結しています。

print(str(i)+’:’+msg)

コードと実行結果です。

#セリフを表示させる回数
N=5

#ドラマの名セリフ
msg="同情すんなら金をくれ!!"

for i in range(N):
  print(str(i)+':'+msg)

セリフを変えるには、変数msgを変更します。

#セリフを表示させる回数
N=5

#ドラマの名セリフ ← ここを変更
msg="僕は死にません!!"

for i in range(N):
  print(str(i)+':'+msg)

武田鉄矢さんの金八先生とは全く異なるキャラで必死な愛を感じました。
ただ当時、どこかの中学生の男子が真似して車の運転手に怒られていたという話を噂程度に聞いたことがあります。


では、ドラマのセリフを標準入力を使って、都度変更させるコードにしてみます。

print('あなたが好きな名セリフを入力して下さい--->>',end='')

end=”で、改行しないで直後に入力できるようにしている。

標準入力はinput関数を使用して、msgに代入しています。

msg=input()

では、コードと実行結果です。

#表示する回数
N=5

#ドラマの名台詞←ここを標準入力に変更
print('あなたが好きな名セリフを入力して下さい--->>',end='')
msg=input()

for i in range(N):
    print(str(i)+':'+msg)

例えば、「不適切にもほどがある」の「宜保愛子じゃない!!」などを入力してみるのも面白いかも知れません。
宜保愛子さん、すっごく久しぶりに名前を聞きました。

(「愚か者」と「ギンギラギン」は、ブログで書いちゃっても良いのかな・・・?)

お若い方にとって、「宜保愛子って誰??」だと思われるかも知れませんので、簡単に書くと、「タレント、霊能力者、作家」です。

この記事の後半は、こちらで扱ったコードを中心に、基本のFor文コードと内包表記でのコードを対応付けていきます。
Pythonでループの基礎と内包表記を対応付けて解説「宜保愛子じゃない!!」

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

マクセルアクアパーク品川(水族館)の写真です。

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

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

Python自作サンプル集へ戻る

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

【Python_円周率】円の面積、球体の体積、円周を計算する関数の使い方、二乗3乗などの累乗の計算の仕方、戻り値の小数点以下桁指定

この記事を読むことで、

・Pythonの二乗・3乗などの累乗の計算

・円周率を使った計算で円の面積を求める関数

・球の体積を求める関数

・円周を求める関数

・小数点以下を含めた桁の指定



の概要が掴めます。

用意する関数は、

・円の面積を求める関数area(引数:半径r)
・球の体積を関数globe(引数:半径r)
・円周を求めるcircle(引数:半径r)

です。

今回は引数の半径rは共通なので、それぞれの関数呼び出しの前に、ここでは半径rを5cmとしているので、

r=5

を記述しました。

それぞれの関数の呼び出しのコードです。
上から、円の面積、球の体積、円周の長さです。

#それぞれの関数の呼び出し
area_ans=(area(r))   #円
globe_ans=(globe(r)) #球
circle_ans=circle(r) #円周

上記の3つの関数を呼び出して、そこで計算した値(戻り値)をそれぞれ

area_ans(求めた円の面積)
globe_ans(求めた球の体積)
circle_ans(求めた円周の長さ)

に代入して、小数点以下も含めた桁指定をして、結果を表示します。

円周率を扱うのに、モジュールをインポートしています。

#円周率を扱うのに、インポートしている
import math

円の面積を計算するのに、事情はr**2で半径の二乗を求めています。
**の後を3にする球体や立方体など3次元の体積が求められます。

#円の面積を計算。**で二乗を使っている
def area(r):
    return r**2*math.pi

円周率はご存知の通り、3.14159265359…と桁数が膨大なので、戻り値の表示はここでは整数も含めた5桁で表示します。
コードはこの様になります。

#桁数を指定して表示
print('円の面積は'+'{:.5}'.format(area_ans)+'cm ^2です。')
print('球の体積は'+'{:.5}'.format(globe_ans)+'cm ^3です。')
print('円周は、'+'{:.5}'.format(circle_ans)+'cmです。')

では、まずは円の面積を求めます。
コードと実行結果です。

import math

#円の面積を計算。**で二乗を使っている
def area(r):
  return math.pi*r**2

#半径
r=5
area_ans=area(r)


#桁数を指定して表示
print('円の面積は'+'{:.5}'.format(area_ans)+'cm ^2です。')


次に球の体積を求めます。
公式は、

V=\frac{4}{3}πr^{3}

ですので、体積を計算する関数のコードは、

#球の体積を計算。**で3乗を使っている
def globe(r):
    return 4/3*math.pi*r**3

となります。

コードと実行結果です。

import math

#円の面積を計算。**で二乗を使っている
def area(r):
  return math.pi*r**2

#球の体積を計算。**で3乗を使っている
def globe(r):
    return 4/3*math.pi*r**3


#半径
r=5

#関数を呼び出し
area_ans=area(r)#円の面積
globe_ans=globe(r)#球の体積

print()

#桁数を指定して表示
print(' 円の面積は'+'{:.5}'.format(area_ans)+'cm ^2です。\n')
print(' 球の体積は'+'{:.5}'.format(globe_ans)+'cm ^3です。\n')

結果表示のprint文の最後の改行は、「\n」を使っています。
macをお使いの方は、[option]+[¥]で「バックスラッシュ」が表示されます。


最後に円周の長さを求めます。

#円周を求める
def circle(r):
    return 2*math.pi*r

コードと実行結果です。

import math

#円の面積を計算。**で二乗を使っている
def area(r):
  return math.pi*r**2

#球の体積を計算。**で3乗を使っている
def globe(r):
    return 4/3*math.pi*r**3

#円周を求める
def circle(r):
    return 2*math.pi*r


#半径
r=5

#関数を呼び出し
area_ans=area(r)#円の面積
globe_ans=globe(r)#球の体積
circle_ans=circle(r)#円周の長さ

print()

#桁数を指定して表示
print(' 円の面積は'+'{:.5}'.format(area_ans)+'cm ^2です。\n')
print(' 球の体積は'+'{:.5}'.format(globe_ans)+'cm ^3です。\n')
print(' 円周は、'+'{:.5}'.format(circle_ans)+'cmです。\n')


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

スカイツリーからの眺めです。

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

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

Python自作サンプル集へ戻る

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

【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 ■

2 つの文字列の半角スペース区切りでの分割 Python3編

3 つの文字列の半角スペース区切りでの分割 Python3編


【半角スペース区切りでの文字列の分割】5 つの文字列の半角スペース区切りでの分割 Python3編


■ 標準入力メニュー3 ■

1 つの入力 Python3編


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

半角スペース区切りの 3 つの入力 Python3編

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

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


■ 標準入力メニュー4 ■

1 行の整数の入力 Python3編

2 行の整数の入力 Python3編

5 行の整数の入力 Python3編

100 行の整数の入力 Python3編

【整数の行入力】1,000行の整数の入力 Python3編


■ 標準入力メニュー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自作サンプル集へ戻る

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