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

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

WindowsからMacへパソコン買い換え

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

※Macを使っていて目が疲れる、とお悩みの方は、こちらの記事をご覧下さい。
私はnight shiftモードを設定しました。
macOSのダークモード設定やブルーライトカット機能で目に優しい生活

また、細かい色の設定は(例えば少し黄色みを帯びた設定にしたいなど)、システム環境設定(歯車マーク)→デスクトップからこちらを選びます。

【補正】を押します

アプリ開発の第一歩としてWindowsからMacへパソコンを買い換えることに致しました。
購入場所はアキバヨドバシ。
Mac売り場で、初めてのMacに興奮して、はしゃいじゃってしまいました(⌒-⌒; )
後々役立ったのが、店員さんが教えて下さった、USB変換アダプタです。
Mac純正の物をヨドバシのポイントを使って購入しました。

その他、パソコンの買い換えで役立った物を紹介します。

●はじめてのマック2020
この2020の部分は、下記リンクから最新のものに飛べると思います。
Macの設定からMac初心者がつまづく所を分かりやすくポイントを絞って書かれているので、
Mac購入を決めた1から2ヶ月前ぐらいにこの本を購入して準備して置いたので、スムーズに行きました。
ランチパッドの3本指とか、すげーすげーってなっていました。

●カスペルスキー
基本情報技術者試験で、ガッツリとセキュリティを勉強したので、このセキュリティソフトにしました。
高機能なのにシンプルで使いやすいです。

●Office365
ビジネスでは必須。あと、Excelは特に、Pythonで使うかも。

Windowsではアクセサリにあった付箋アプリ、Macではアップルストアから「付箋」で検索したら、「Pocomemo」というアプリが見つかりました。

こんな感じでシンプルに使えます。

その他、写真をやっている者として、Apple Storeから無料で入手出来て「神アプリ」だと思うのは、
「Photo Pad写真編集ソフト」です。
操作が直感的に分かりやすく、Macの写真アプリやファインダーの書類に保存した写真の編集に使えます。

●Mac備忘録

ここから先は、Macを使って発見したことを備忘録として記録します。

・Google Chromeでタブを複数開いた時に左右のタブに移動する
  Windowsで言う、Ctrl +Tab に当たるのが、Macではoption+command+→
  Shift+Ctrl+Tabに当たるのが、option+command+←です。

・Google Chromeで前のページに戻る
  Windowsで言うAlt+←に当たるのがMacで言うとcommand+←です。

・複数画面を開いた時にデスクトップなどに切り替え
  トラックパッド三本指で下から上に 

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

【Python乱数】奇数で推しにキッス!!(IF文|乱数|奇数と偶数|演算子)

この記事を読むことで、

初歩的なIF文

・1から10までの乱数の生成

・奇数、偶数の判定によって処理を分岐

・余りを求める演算子の扱い

の概要が掴めます。

奇数が出たら推しと夢の中でキスが出来、偶数だったら推しが他のファンとキスする夢を見るといった分岐処理のプログラミングです。

奇数か偶数かの判定は、2で割って余りが1だったら奇数、そうでないなら偶数とします。多くの言語で余りは剰余演算子「%」を使って求められます。

これから書いていくPythonでも「乱数%2==1」でしたら奇数になります。

ここではファイル名を「oddkiss」にします。
奇数は英語で「odd」です。ちなみに偶数はevenです。
この辺り、基本情報技術者試験を受ける方は覚えておいて損はないと思います。

乱数は、random.randint(始め,終わり)を使います。

コードはコチラになります。

#ランダムモジュールをインポートする
import random

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

#割り算を行い、奇数か偶数での分岐処理をする
if num%2==1:
  word="奇数です。推しとキスをする夢を見た。"
else:
  word="偶数です。他のファンが推しとキスをする夢を見た。"

print(word)

「==」とイコールが2つ続いているのは、1つだと代入を意味してしまうので、==と2つかくことで等しいという条件を指定しています。

実行結果です。

奇数の場合と偶数の場合で両方実行出来ました。
更に、numはどんな数なのかも表示させるようにコードを少し変更します。

print('num='+str(num)+'で、'+word)

この部分に’ ‘で文字列、+で連結、数字を文字列の中で使うのに「str」を使っています。

#ランダムモジュールをインポートする
import random

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

#割り算を行い、奇数か偶数での分岐処理をする
if num%2==1:
  word="奇数です。推しとキスをする夢を見た。"
else:
  word="偶数です。他のファンが推しとキスをする夢を見た。"

print('num='+str(num)+'で、'+word)

実行結果です。

では何度か実行してみた結果です。

ここで、自分の推しが表示されると一層楽しめそうなので、変数OSHIに標準入力を使って少しプログラムを改変しました。

#ランダムモジュールをインポートする
import random

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

#あなたの推しの名前を入力して下さい。←【追加】
print('あなたの推しの名前を入力して下さい>>>>>',end="")
OSHI=input()

#割り算を行い、奇数か偶数での分岐処理をする ←【追加修正】
if num%2==1:
  word="奇数です。【"+OSHI+"さん】が私とキスをする夢を見た。"
else:
  word="偶数です。【"+OSHI+"さん】が他のファンとキスをする夢を見た。"

print('num='+str(num)+'で、'+word)


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

横浜マリンタワーから撮影した夜景です。

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

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

Python自作サンプル集へ戻る

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

【Python閏(うるう)年】ループと西暦と和暦の変換

この記事を読むとことで、

・うるう年をIF文と剰余演算子%で判定

・Forループ


・リスト


・リストの末尾に要素を追加


・西暦と和暦の対応

の概要が掴めます。

うるう年はプログラミングを学ぶ上で重要な論点です。

Pythonのコードで、開始年から終了年までの間のうるう年を調べて、和暦と対応付けます。

例えば、私が生れた1977年から、この記事を書いている2025年まで、うるう年が何回あったのか、その年の西暦と和暦の対応を付けて元号も表示出来ます。

まず、うるう年の定義ですが、

4で割れて且つ100で割れない、または400で割れる

になります。

2025年(令和7年)は4で割れないので、うるう年ではありません。
2100年は4で割れますが、100で割れるのでうるう年ではありません。

具体的に、1977年(昭和52年)から2025年(令和7年)までの期間のうるう年を見ていきます。

標準入力を使って、開始年に1977、終了年に2025を入力します。
まず、標準入力で、開始年(yearStart)と終了年(yearLast)を入力するコードです。

#開始年の入力
print("開始年を西暦で入力して下さい -->>",end="")
yearStart=int(input())

#終了年の入力
print("終了年を西暦で入力して下さい -->>",end="")
yearLast=int(input())

次に、うるう年だった場合にリストleapArrayに追加するコードです。

この処理で、うるう年の条件に当てはまる、「4で割り切れて100で割れない」または、400で割れると言う条件が当てはまったら、その年をリストleapArrayに追加します。

リストに追加する部分のコードです。

leapArray.append(i)

また、len(leapArray)で配列の長さを求めることによって、うるう年が何回あったのかをカウントします。

#開始年の入力
print("開始年を西暦で入力して下さい -->>",end="")
yearStart=int(input())

#終了年の入力
print("終了年を西暦で入力して下さい -->>",end="")
yearLast=int(input())

#うるう年を格納するリストを用意
leapArray=[]

#ループでうるう年に該当する年をリストに格納する
for i in range(yearStart,yearLast+1):
  if (i%4==0 and i%100!=0) or (i%400==0):
    leapArray.append(i)

#リストの長さはうるう年が合った回数になる
num=len(leapArray)


#うるう年が追加されたリストを表示させる
for year in leapArray:
  print(year)

print("うるう年は【"+str(num)+"】回ありました。")

ここまでの実行結果です。

最後に西暦年から和暦に変換する処理を行います。

昭和は1926年からなので、西暦年から1925を引きます。
平成は1989年からなので、西暦年から1988を引きます。
令和は2019年からなので、西暦年から2018を引きます。

西暦が格納されたyearから必要な年数を引いた分を変数japanに格納します。

便宜上、 昭和64年と平成31年はそれぞれ平成と令和の元年に致しました。

#開始年の入力
print("開始年を西暦で入力して下さい -->>",end="")
yearStart=int(input())

#終了年の入力
print("終了年を西暦で入力して下さい -->>",end="")
yearLast=int(input())

#うるう年を格納するリストを用意
leapArray=[]

#ループでうるう年に該当する年をリストに格納する
for i in range(yearStart,yearLast+1):
  if (i%4==0 and i%100!=0) or (i%400==0):
    leapArray.append(i)

#リストの長さはうるう年が合った回数になる
num=len(leapArray)


#うるう年が追加されたリストを西暦と和暦で表示する
for year in leapArray:
  if year>=2019:
    japan=year-2018
    wareki="令和"

  elif year>=1989 and year<2019:
    japan=year-1988
    wareki="平成"

  else:
    japan=year-1925
    wareki="昭和"  
    
  print(str(year)+"年 "+"("+wareki+str(japan)+"年)")

print("うるう年は【"+str(num)+"】回ありました。")

実行結果です。

うるう年については他の言語でも記事を書きました。
アセンブラ(フローチャート付き)
C言語

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

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

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

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

Python自作サンプル集へ戻る

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

【PythonのIF文】関西人度と関東人度診断をチェック

この記事を読むことで、

・IF文

標準入力


比較演算子


関数

の練習になります。

例として「関西人度、関東人度」診断を用います。

標準入力や比較演算子を使い、あなたの関東人ポイントがいくつで、関西人ポイントがいくつで、どちらが多いか比較して【関東人】または【関西人】を判定します。

コードのメンテナンス目的で関数の基本的な説明も掲載しました。

参考にした診断はコチラです。
あなたが「関東人」か「関西人」かを見極める10の質問 隠しても無駄だぞ!!

こちらをヒントにしてPythonでアレンジしてみました。

まず、私(東京都出身)がやってみたコチラの診断結果です。

この診断をPythonでプログラミングしてみました。
質問には半角の1か2を入れて回答するので標準入力を用います。
標準入力で数字を扱う場合は、このように記述します。

#標準入力で数字を入れる
ans=int(input())

これで、ansに標準入力で1または2の解答を入力します。
それでは、1つ分の診断プログラムを作成致します。

#関東人・関西人の質問
print("あなたが人に道を教える時は?")
print("1:「この横断歩道を渡って・・・」\n2:「そこをガ〜〜〜〜〜って行って・・・」")
print("あなたの回答>>>>>",end="")

#標準入力で数字を入れる
ans=int(input())

#関東人・関西人の分岐処理
if ans==1:
  print("あなたは【関東人】です。")
elif ans==2:
  print("あなたは【関西人】です。")
else:
  print("半角数値の1か2を押して下さい。")

質問の部分のprint文に使われている「\n」は改行はです。
「\」のバックスラッシュは、macの場合は「option」+「¥」です。

また、

if ans==1:

と「==」としているのは、「=」一つだけだと代入になってしまうので、ansが1と等しいか判定する際には、「==」とイコールを2つ並べて書きます。

このコードでは、「あなたが道を教える時は?」と言う質問に対して、
「1:この横断歩道を渡って・・・」と答えるか、
「2:そこをガ〜〜〜〜って行って・・・」と答えるかで処理が分岐されます。
1または2の該当する方を選びますが、それ以外の回答を選んだ場合のメッセージも表示されています。

1を選んだ場合

2を選んだ場合

それ以外(999)などを押してしまった場合

質問が1つだけだと本当に関東人か関西人か分かりづらいので、関東に該当する答えを選んだ場合は、関東人ポイント(eastPoint)が加算され、関西に該当する答えを選んだ場合は、関西人ポイント(westPoint)が加算され、どちらが多いか比較するプログラムに改良してみます。

まず、この部分で各ポイントを0で初期化します。

#関東人、関西人ポイントの初期化
eastPoint=0
westPoint=0

また、「+=」と、加算代入演算子で使って加えています。

if ans==1:
  eastPoint+=1

また、トータルで関東人ポイントと関西人ポイントのどちらが多いかの計算結果による判定のコードはこちらになります。
同じ場合は「ハイブリッド」にしました。

#関東人か関西人かの判定
if eastPoint>westPoint:
  msg="\nあなたは【関東人】です。"
elif westPoint>eastPoint:
  msg="\nあなたは【関西人】です。"
else:
  msg="\nあなたは【ハイブリット】です。"

関東人か関西人かハイブリットかを変数msgに入れて、最後にprint文で出力することにより、printと書く分量を節約でき、コードが簡潔になりました。

それでは、質問1と質問2までのコードを掲載致します。

#関東人、関西人ポイントの初期化
eastPoint=0
westPoint=0


#質問1
print("質問1:あなたが人に道を教える時は?")
print("1:「この横断歩道を渡って・・・」\n2:「そこをガ〜〜〜〜〜って行って・・・」")
print("あなたの回答>>>>>",end="")

#標準入力で数字を入れる
ans=int(input())

#回答に応じて関東人、関西人ポイントをそれぞれに加算
if ans==1:
  eastPoint+=1
elif ans==2:
  westPoint+=1
else:
  print("半角数値の1か2を押して下さい。")


#質問2
print("\n質問2:納豆は?")
print("1:「くさい!!!」\n2:「美味しい」")
print("あなたの回答>>>>>",end="")

#標準入力で数字を入れる
ans=int(input())

#回答に応じて関東人、関西人ポイントをそれぞれに加算
if ans==1:
  westPoint+=1
elif ans==2:
  eastPoint+=1
else:
  print("半角数値の1か2を押して下さい。")

#関東人か関西人かの判定
if eastPoint>westPoint:
  msg="\nあなたは【関東人】です。"
elif westPoint>eastPoint:
  msg="\nあなたは【関西人】です。"
else:
  msg="\nあなたは【ハイブリット】です。"


print("あなたは"+msg+"\nあなたのeastPointは「"+str(eastPoint)+"」、westPointは「"+str(westPoint)+"」でした。")

関東人の場合の実行結果

関西人の場合の実行結果

ハイブリットの場合の実行結果

これでもプログラムは動くのですが、このコードをじっくりと眺めてみて、ちょっと冗長な部分がございました。

例えば、

#回答に応じて関東人、関西人ポイントをそれぞれに加算
if ans==1:
  eastPoint+=1
elif ans==2:
  westPoint+=1
else:
  print("半角数値の1か2を押して下さい。")

と、それぞれのポイントを加算している箇所がございます。

今は質問が2つだけですが、今後質問が増える時にちょっとコードの量が多いので、ここの部分を関数にして見ました。加算するポイントを引数にして、関数add_pointで加算処理をしています。

#ポイントを加算
def addPoint(x):
  return x+1

xの中に加算するポイント(eastPointまたはwestPoint)を入れて、returnで1加えた値を戻り値としています。

呼び出し元です。

#回答に応じて関東人、関西人ポイントをそれぞれに加算
if ans==1:
  eastPoint=addPoint(eastPoint)
elif ans==2:
  westPoint=addPoint(westPoint)

また、1か2以外の数字を入れた場合は、関数otherを定義しました。

#半角の1,2以外が押されてしまった場合
def other():
  print("半角数値の1か2を押して下さい。")

呼び出し元です。
(elseの所)

else:
  other()

更に、関東か関西か分岐をする処理の箇所で、この部分を関数judgeとして定義しました。

#判定
def judge(e,w):
  if e>w:
    return "\nあなたは【関東人】です。"
  elif w>e:
    return "\nあなたは【関西人】です。"
  else:
    return "\nあなたは【ハイブリット】です。"

判定の呼び出し元です。

#関東人か関西人かの判定
msg=judge(eastPoint,westPoint)

関数judgeを呼び出す際に引数として、eastPointとwestPointを入れて、戻り値としてmsgにポイントが多い方の文字列が入る様にしました。

流れとして、呼び出し元のeastPointが関数judgeの仮引数のeに入り、呼び出し元のwestPointが関数judgeの仮引数のwに入って、関東、関西、ハイブリッドの判定をして、その文字列を戻り値として呼び出し元のmsgに入ります。

ここまでをまとめたコードがこちらになります。

#関東人、関西人ポイントの初期化
eastPoint=0
westPoint=0

#ポイントを加算
def addPoint(x):
  return x+1

#半角の1,2以外が押されてしまった場合
def other():
  print("半角数値の1か2を押して下さい。")

#判定
def judge(e,w):
  if e>w:
    return "\nあなたは【関東人】です。"
  elif w>e:
    return "\nあなたは【関西人】です。"
  else:
    return "\nあなたは【ハイブリット】です。"


#質問1
print("質問1:あなたが人に道を教える時は?")
print("1:「この横断歩道を渡って・・・」\n2:「そこをガ〜〜〜〜〜って行って・・・」")
print("あなたの回答>>>>>",end="")

#標準入力で数字を入れる
ans=int(input())

#回答に応じて関東人、関西人ポイントをそれぞれに加算
if ans==1:
  eastPoint=addPoint(eastPoint)
elif ans==2:
  westPoint=addPoint(westPoint)
else:
  other()


#質問2
print("\n質問2:納豆は?")
print("1:「くさい!!!」\n2:「美味しい」")
print("あなたの回答>>>>>",end="")

#標準入力で数字を入れる
ans=int(input())

#回答に応じて関東人、関西人ポイントをそれぞれに加算
if ans==1:
  westPoint=addPoint(westPoint)
elif ans==2:
  eastPoint=addPoint(eastPoint)
else:
  other()


#関東人か関西人かの判定
msg=judge(eastPoint,westPoint)


print("あなたは"+msg+"\nあなたのeastPointは「"+str(eastPoint)+"」、westPointは「"+str(westPoint)+"」でした。")


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

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

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

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

Python自作サンプル集へ戻る

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

コロナ禍のストレス解消、ハッカ愛からハッカー!?

この記事では、コロナ自粛疲れをリフレッシュしたい時に是非オススメなハッカ(ニホンハッカ)を紹介しています。
不要不急の外出自粛に都道府県越えを避けるなど、ストレスをスッキリ系のアロマで解消したい方には、お役立て頂けるかも知れません。

■ 関連記事 ■
メインメニューに戻る
風呂グラミング(入浴剤紹介)
アロマでゴキブリを追い出せ

タイトルに「ハッカー」とありますが、ハッカーと言っても、コンピュータのハッカーのことではありません。
ハッカ油を愛してしまいました。

子どもの頃、喘息の発作がしんどくなるとハッカのニオイを嗅いで症状を治めたことがあります。

※全てのぜん息の患者の方にハッカが効くという訳ではありません。

その影響か、大人になってごく稀にしか喘息の発作が出なくなった今でも、ハッカへの敬愛が溢れています。

そこで、ハッカの中でもマイルドでお気に入りのメーカーを紹介します。

※回し者では無く、ファンです。
北見ハッカ通商さんの製品のファンになりました。
その中で私が購入して使ってみた製品のレビュを致します。

まずは入浴剤です。
コロナのストレス、グルメでプチ贅沢すると太りそうなので、入浴剤ぐらいは良いの使いたい。
詳しくは、風呂グラミング(入浴剤紹介)をご参照ください。

Mint Creamです。
ミントの入った馬油です。
風呂上りに頭皮に付けると、スッキリします。
受験勉強や風呂上りのプログラミングにもおススメです。

ハッカ油です。
これはお掃除スプレーに使っています。
ハッカは虫よけ効果もあるので、自分のストレス解消と一石二鳥で使っています。

■ 関連記事 ■
メインメニューに戻る
風呂グラミング(入浴剤紹介)
アロマでゴキブリを追い出せ

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

この記事を読むことで、


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

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

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

の概要が掴めます。

今回書くドット絵は、ギャルマインドで「まじ卍(まんじ)」の「」を描いてみます。

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

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

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

元になる、二次元配列「Manji」です。
(コピペ可能です。)

#卍のドット絵の元になる二次元リスト
Manji=[
[1,1,1,1,1,1,0,0,0,0,1],
[0,0,0,0,0,1,0,0,0,0,1],
[0,0,0,0,0,1,0,0,0,0,1],
[0,0,0,0,0,1,0,0,0,0,1],
[1,1,1,1,1,1,1,1,1,1,1],
[1,0,0,0,0,1,0,0,0,0,0],
[1,0,0,0,0,1,0,0,0,0,0],
[1,0,0,0,0,1,1,1,1,1,1]
]

リストの「列の」長さは下記のように求めます。
Manji[0]としているのは、リストの長さは各行同じなので、リストManjiの1行目、
すなわちManji[0]の長さを求めます。
リストの添字が0から始まるので、このように-1しています。

num=len(Manji[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(' ')


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

#卍のドット絵の元になる二次元リスト
Manji=[
[1,1,1,1,1,1,0,0,0,0,1],
[0,0,0,0,0,1,0,0,0,0,1],
[0,0,0,0,0,1,0,0,0,0,1],
[0,0,0,0,0,1,0,0,0,0,1],
[1,1,1,1,1,1,1,1,1,1,1],
[1,0,0,0,0,1,0,0,0,0,0],
[1,0,0,0,0,1,0,0,0,0,0],
[1,0,0,0,0,1,1,1,1,1,1]
]

num=len(Manji[0])-1

print()

for i,mark in enumerate(Manji):
  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(' ')

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

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