Python で今日の運勢は??randintで星座占い♪

この記事では、星座占いをテーマに、Pythonでの乱数の使い方と、順位によってメッセージをifとelif とelseで分岐して表示する方法を学びます。

私はおうし座ですので、変数seizaのところに「おうし」と入れました。
実行結果です。

さて、コードの説明ですが、import randomで、乱数を発生させています。
これは後に運勢の順位に使います。

num=random.randint(1,12)

で、1から12までの乱数を発生させています。
「へびつかい座」を入れる場合でしたら、random.randint(1,13)になりますね。

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

あとは演算子。

==とイコール2つで1位だったらの条件指定になります。
=と、一つだけだと代入になりますので。

あとはelif分の<=で何位以下、elseでそれ以外(この場合12位)です。

では、コードです。

import random

seiza="おうし"
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チョベリバ(涙)"

print(msg)

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

print文の所で「チョベリなんとか・・・」ってありますけれど、かつて「コギャル」と呼ばれた方(多分今頃はアラフォーさん?)が女子高生だった頃に流行った言葉です。

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

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

最後までお読み頂きありがとにゃん(=^x^=)

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

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

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

Pythonで半端ならK.O….踊♪

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

Adoさんの歌って、プログラミングの教材になるんですよね。
今回は踊からヒントを得たプログラムを作ってみました。

関連記事:C言語うっせぇわループ

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

Python自作サンプルに戻る
C言語自作サンプルに戻る
メインメニューに戻る
基本情報技術者試験

自己紹介

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

歌詞に「半端ならK.O.」とありますね。
ここから半端、つまり、割り算をして割り切れなかったら負け、割り切れたら勝ちという割り算ゲームを格闘ゲームをイメージして作りました。
余りが0で割り切れたなら勝ち、余りが出たら負けです。

まずは、実行してみます。

ここで被除数(割られる数)を入力します。
「9」

次に除数(割る数)を入力します。
「2」


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

次は8を2で割ってみます。

割り切れてK.O.,勝ちしました。

それではこのプログラムのポイントとなる箇所をトレースしてみます。

最初の入力画面のコードです。
ここで、標準入力を使って、被除数(割られる数)を入力しています。
>>>のすぐ後に入力出来るようにprint文の中で、

end=””

を使っています。

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

次に、除数(割る数)を標準入力を使って入力しています。

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

その後、割り算して余りを求め、結果を返す関数を呼び出しています。

#remainder(余り)を計算する関数を呼び出す
judge=dance_div(dividend,divisor)
print("果たして'YOU'の勝敗結果は・・・・!")

割り算を計算して、余りがあるかどうかによって文字列msgに「YOU WIN」または「YOU LOSE」を戻り値として返すようにしています。

#割り算してあまりを返す関数
def dance_div(dividend,divisor):
    remainder=dividend%divisor
    print("被除数(割られる数)="+str(dividend))
    print("割る数="+str(divisor)+"\n")
    print("余り【"+str(remainder)+"】\n")

    #もしも余りが0だったら勝ち!    
    if remainder==0:
        msg="YOU WIN!!!!!!!!!!!!!!!!!!!"
    else:
        msg="YOU LOSE....." 

    return msg       

最後にこのプログラム全体のコードを掲載します。

#割り算してあまりを返す関数
def dance_div(dividend,divisor):
    remainder=dividend%divisor
    print("被除数(割られる数)="+str(dividend))
    print("割る数="+str(divisor)+"\n")
    print("余り【"+str(remainder)+"】\n")

    #もしも余りが0だったら勝ち!    
    if remainder==0:
        msg="YOU WIN!!!!!!!!!!!!!!!!!!!"
    else:
        msg="YOU LOSE....." 

    return msg       

print("\n ♪ 半端ならK .O ..... ♪ \n")        
#dividendは被除数(割られる数)
print("被除数(割られる数)を入力して下さい>>>",end="")
dividend=int(input())

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

#remainder(余り)を計算する関数を呼び出す
judge=dance_div(dividend,divisor)
print("果たして'YOU'の勝敗結果は・・・・!")

#結果を出力
print(judge+"\n")

宜しかったら、コードをコピペしてアレンジして見てください。

最後までお読み頂きありがとにゃん(=^x^=)

■参考文献■
じっくり丁寧にPythonを学びたい方向け。
まずはpaizaラーニングなどの学習コンテンツで学んで、基礎をマスターしたら、この本でじっくりと初級から中級レベルを目指せます。

関連記事:C言語うっせぇわループ

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

Python自作サンプルに戻る
C言語自作サンプルに戻る
メインメニューに戻る
基本情報技術者試験

自己紹介

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

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

この記事ではPythonに絞って、ゲーム感覚でプログラミングを楽しめて、尚且つ、出来るだけコストを書けず挫折しにくい学習方法を紹介しています。

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

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

paizaラーニング さんという学習コンテンツで、1レッスンに8個程度のチャプターがあります。入門講座の他に完全無料の「体験版」があるので、自分との相性の合う言語を手軽に探せます。

2021年2月21日からPythonの学習を本格的に始めました。
それまでは幾つかの言語を自分探し的にやっていました。
2021年5月5日(GW最終日)に体験版及び入門講座を終えました。

体験版と入門講座のLesson6までをまず行いました。
ここまでで変数、条件分岐、ループ、リスト(他の言語でいう配列)が学べます。

その後、Lesson7の関数に進む前にレベルアップメニューの問題集のリンクがあるので、そちらで条件分岐、配列、配列活用メニュー、二重ループメニューを終わらせ、最後にCランクレベルアップメニューをクリアしました。

レベルアップ問題集は、順番に解いていくと最後の問題が解けるようにテーマごとに構成されていて、まずは自力で解いて、それから正解した場合でも必ず模範解答を確認して、もっと良いやり方があったらそのやり方でも問題を解いてみました。

Cランクアップメニューをクリアした後、Lesson7の関数に進み、最後の動画レッスン(2021年5月5日現在)のLesson10までで関数に加えてクラス、例外処理を学びました。

動画レッスンには内包表記はありませんが、レベルアップ問題集の模範解答などを見て、内包表記が少し分かる程度の知識があれば、この本、「独習Python」を読めると思います。

paizaにはスキルチェックというものがあり、ランクがDランク、Cランク、Bランク、Aランク、1番上がSランクになります。

私は2021年12月現在Cランクですが、Cランクの問題は解ける問題もありばそうでない問題もあり、安定して解けるのはDランクの問題なので、実質的な実力はDランクだと思っています。

そこで、実質的にCランクの問題を安定して解ける力をつけ、さらに上を目指すのに、「レベルアップ問題集」のPythonのコードと仕事で必要になるGASのコード(スプレッドシートを使用)をブログで公開しています。

関連記事:paizaレベルアップ問題集をPythonとGASの両方で解いてみた集
これは、DランクからCランクにレベルアップするための、Cランク獲得ストーリーを参考にしています。



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

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

出来れば基本情報技術者試験合格レベルの知識もあった方がより分かりやすいかも知れませんが、ITパスポートのみという方でも、論理演算とか知っていれば学習可能かも知れません。

2021年5月23日からKivyを初め、今現在はPython×kivyで2021年内にアプリを開発出来るよう、仕事と並行して勉強しています。

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

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

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

この記事を読むことで、Pythonのクラスが「脳にダイレクトに衝撃を与えながら記憶に残って定着して使いこなせる」様になります。
と、申すのも、Pythonでのクラス学習に教材として、故・志村けんさんが歌う「ウンジャラゲ」を使って学んでいくからです。

この記事ではPythonを学んでクラスまで辿り着いた昭和生まれのミドル世代中高年の方々に、どこまでも優しい記事を心がけて書いておりますが、Pythonのクラスを勉強中の平成・令和生まれの方も宜しかったらお立ち寄り下さい。内包表記も使っているので、ループの学習中の方もどうぞご覧下さい。

プログラミング初心者で、子どもの頃にTV で「志村けんさん」のギャグを見て笑っていた昭和の方々を対象にしていますが、若い方でも志村けんさんをご存知の方は大勢いらっしゃると思います。

プログラミングを学んでいる私のような年配の方で、若い方から学ぶのはチョット・・・とためらいのある方は、こちらの記事と併せて、クラスよりももっと前の基礎文法も扱っている当ブログのPython自作サンプル集もご覧下さいませ。

関連記事(ループで「僕は死にましぇ〜〜ん」・「同情すんなら金をくれ!!」):Pythonでループの基礎と2つずつ増加、ドラマの名台詞を表示、「同情すんなら金をくれ!!!!」

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

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

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

クラス=設計図
インスタンス=クラスという設計図から作られた「具体的な」製品
というと、なんだか小難しい感じがするので、

クラス=志村けんさんの「ウンジャラゲ」を例にして、「何」曜日は「ナニナニナニ♪」といったフォーマット
インスタンス=そのフォーマットから作った、「月曜日はウンジャラゲ」、「火曜日はハンジャラゲ」・・・「日曜日はランラランらランランっ!」と言った「具体的な」各曜日ごとの踊り

という認識でコードを書いています。

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

では、いよいよプログラムを詳しく見ていきます。
最初に志村けんさんのセリフとBGMを出力するコードです。
これはシンプルなprint文です。

#志村けんさんのコールと「ウンジャラゲの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に「ウンジャラゲ(呪文)」が入り、これをリストを使って、各曜日用意します。

次に、月曜日から日曜日までインスタンス化する処理です。

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

この後、各曜日を格納するリストeverydayを、各曜日の英語略で作ります。

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('-------------------------------------------')
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('-------------------------------------------')
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') 

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

最後まで読んでくださって、ありがとうございます。
あなたを愛しています(=^x^=)

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

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

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

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

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

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

この記事を読むことで、クラスを使った演算を学べます。
具体例として、アロマオイルの単価と数量と税率から合計金額を演算します。
クラスは「設計図」というイメージで説明されることが多いです。

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

おすすめのハッカ油とレモン精油を購入するイメージでコードを書きました。
ハッカ油5本、レモン精油4本とします。
ハッカは1本1000円、レモンは1210円で計算しました。

今回イメージで購入するハッカ油とレモン精油です。

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

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

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

では、コードを書いていきます。
まず、クラスは下記のコードで作れます。

class Aroma:

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

クラス内で、消費税率taxを宣言しました。

tax=1.1

消費税率10%ですね。

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

初期化する為に、「コンストラクタ」という特別なメソッドを使います。
このメソッドがあるから、「ハッカ」→ <初期化> → 「レモン精油」と計算出来るのです。そのため、メソッド「money」の前にコンストラクタを書いています。
コンストラクタはクラスの中で1番先に呼び出されます。

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

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

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

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

コンストラクタの後に、値段を計算するメソッドmoneyを書きます。

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

ハッカ油の値段と数量と消費税率を掛けてintで整数にして計算しています。

ハッカ油やレモン精油をクラスを使って計算するのは、クラスという設計図のような物に「ハッカ油」、「レモン精油」の単価と数量を指定して計算します。
そのインスタンス化と出力のコードです。

#インスタンス化
hakka=Aroma(1000,5)
remon=Aroma(1210,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(1000,5)
remon=Aroma(1210,4)

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

アロマなんかにそんなにお金使うのか!!!という声も聞こえてきそうですが、
何にお金を使うのかは人それぞれですよね。
おすすめは 北見ハッカ通商さんのハッカの商品 です。

◆関連記事◆
アロマでゴキブリを追い出せ
ハッカ愛から、ハッカー

ご精読ありがとうございました。
あなたを愛しています(=^x^=)

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

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

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

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

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

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

この記事を読むことによって、Pythonの関数で引数に何も指定しない時は、決まった値(デフォルト値)を与える処理が理解できる様になります。
今回具体例として使うのは、職業に何も入れないと「会社員」と表示される例です。

例えば引数の名前の所に「サトウ」さんを指定して、引数の職業の所に何も入れないと「サトウさんは会社員です。」と表示され、引数の名前の所に「志村」さん、引数の職業の所に「変なおじさん」と指定すると、「志村さんは変なおじさんです。」と表示されるプログラムを作りました。

だっふんだ!!

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

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

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

早速ですが、全コードと結果を掲載します。

def jobs(name,job='会社員'):
    print('【'+name+'】さんは【'+job+'】です。')

jobs('サトウ')
jobs('ヤマダ')
jobs('坂本龍馬','幕末の土佐藩士')
jobs('タナカ')
jobs('志村けん','変なおじさん')
jobs('タカハシ')
jobs('両津勘吉','警察官')

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

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

突然ですが、皆さんには子供の頃、ヒーローっていましたか?
私が小学生の時のヒーローは、志村けんさんでした。
今でもヒーローです。

志村さんが新型コロナでお亡くなりになって1年経ちました。
全力で変なおじさんをやって下さった姿は、今でも忘れられません。

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

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

最後まで読んでくださって、ありがとうございました。
あなたを愛しています。

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

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

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

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

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

MacでPythonの環境構築とHello World及び関数で計算と日本語

この記事では、MacでのPythonの環境構築について掲載しております。

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

それでは、自分のPCに環境構築する方法を掲載致します。

MacでPythonの環境設定は、「独習Python」という本に沿って行いました。

Kindle版
単行本(ソフトカバー)

ターミナルの起動は、ランチパッドのところにカーソルを置いて、トラックパッドのところで親指と、人差し指・中指・薬指の3本を摘むようにして起動したら人差し指と中指の2本でトラックパッドを右にスワイプすると「その他」が出てくるので、その中にあるターミナルを選びます。

よく使うので、Dockに入れます。

・Python
・Anaconda

これらをそれぞれの本家からDLして、ここで一旦再起動!!

その後コマンドプロンプトでversionを確認します。

それから下記のインストールを行います。

・VS code

VS Codeは、インストールしたらアイコンをDockに入れます。

それでは、お決まりのハローワールドにちょっと文字を足して動作させてみます。
VS codeで、pylessonというフォルダを作って、test.pyというファイルを作成しました。

では、実行してみます。

cd pylesson
で、ターミナルで保存先のフォルダpylessonに移動させます。

ファイルがあることを確認するのにls(小文字のLと小文字のS)コマンドを使います。
これはWindowsのコマンドプロンプトでいうdirに相当します。

実行は「python test.py」と打ちます。

すると、上の図の赤枠のように実行されました。

次は、指定した数を2倍する簡単な関数を使ってみます。
18782(イヤナヤツ)を2倍してみます。

def bai(x):
  return 2*x

ans=bai(18782)
print(ans)

実行結果です。
37564(ミナゴロシ)になりました。

では、日本語で「世界の皆さん、こんにちは」を表示してみます。

# coding: utf-8

を冒頭に書きます。

実行してみます。

これで環境構築のテストが終わったので、無事にPythonの勉強が出来そうです。

Python自作サンプル集へ
これからプログラミングを始める方へ

息抜きに、写真で癒し(=^・^=)

自己紹介

Python奇数で推しにキッス!!

この記事を読むことで、Pythonの初歩的なIF文と、1から10までの乱数を使って、奇数、偶数の判定によって処理を分けることが可能になります。

また、改行の入れ方や、余りを求める演算子の扱いも学べます。

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

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

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

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

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

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

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

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

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

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

print(str(num)+judge)

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

ちょっとプログラムを改良して見ます。
「推し」と言う所に自分の推しが表示されるとよりプログラムに感情移入しやすくなるので、一部改変します。

まず、推しの名前を入れられるように、標準入力を使いました。

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

また、結果表示文に自然な日本語で表示される様に改変し、更に改行を加えました。
Macでの改行に使うバックスラッシュは、【option】キーを押しながら【¥】を押すと、「\」と入り、「\n」で改行です。

#【ここを追記修正】
#割り算を行い、奇数、偶数での分岐処理をする
if num%2==1:
    judge='は奇数です。【'+OSHI+'】があなたとキスする夢を見た\n'
else:
    judge='は偶数です。他のファンが【'+OSHI+'】とキスする夢を見た\n'

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

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

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

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

#【ここを追記修正】
#割り算を行い、奇数、偶数での分岐処理をする
if num%2==1:
    judge='は奇数です。【'+OSHI+'】があなたとキスする夢を見た\n'
else:
    judge='は偶数です。他のファンが【'+OSHI+'】とキスする夢を見た\n'

print(str(num)+judge)

自分事として当てはめてみると推しが他のファンとキスしている所なんて想像したくないですね。

奇数、偶数の判定は今後の学習でも役立ちそうです。

最後までお読み頂き、誠にありがとうございます。

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

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

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

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

Pythonでうるう年ループ

この記事を読むとPythonでの標準入力の使い方、プログラミングやその処理手順のアルゴリズムに出てくる「閏年(うるう年)」の扱い、リストにうるう年をリストに追加して指定の期間にうるう年が何回あったかをリストの長さを使って数える処理、西暦から和暦に変換する処理が学べます。

うるう年はプログラミングを学ぶ上で重要な基礎概念です。
是非この記事でマスターして行って下さい。

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

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

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

Pythonの勉強を本格的に始めたのが令和3年2月21日で、この記事を書いているのは同年3月19日です。
もう少しで1ヶ月になろうとしている所です。
paizaラーニング さんというところで、勉強しています。
RPG風の動画講義に豊富な問題集、スキルチェックもあるので、お気に入りの学習サイトです。

この1ヶ月学んできたことをそろそろまとめながらアウトプットをしたいと思いました。

・IF文
・Forループ
・配列
・配列の末尾に追加

・西暦と和暦の変化

これらの復習が出来るサンプルを作りました。

Pythonを使って、開始年から終了年までのうるう年を調べて、和暦と対応付けます。
例えば、私が生れた1977年から、この記事を書いている2021年まで、うるう年が何回あったか、それは和暦と対応すると元号は何かの
一覧を作成しました。

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

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

になります。

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

具体的に、1977年(昭和52年)から2021年(令和3年)までの期間のうるう年を見ていきます。
開始年に1977、終了年に2021を入力した実行結果です。

では、このプログラムを部分的に見ていきましょう。
標準入力で、開始年と終了年を入れるコードです。

#開始年の入力
print("開始年(西暦)=",end='')
ystart=int(input())

#終了年の入力
print("終了年(西暦)=",end='')
ylast=int(input())

次に、うるう年だった場合に配列arrayに追加する処理です。

#うるう年格納配列を用意
array=[]

#うるう年に該当する年を配列に格納する
for i in range(ystart,ylast+1):
    if (i%4==0 and i%100!=0) or i%400==0:
        array.append(i)

#配列の長さ、つまりうるう年があった数を数える
num=len(array)

この処理で、うるう年の条件に当てはまる、「4で割り切れて100で割れない」または、400で割れると言う条件が当てはまったら、その年を配列arrayに表示します。

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

最後に西暦年から和暦に変換する処理です。
昭和は1926年からなので、西暦年から1925を引きます。
平成は1989年からなので、西暦年から1988を引きます。
令和は2019年からなので、西暦年から2018を引きます。

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

for i in range(num):
    if array[i]>=1989 and array[i]<2018:
        heisei=array[i]-1988
        gengou=heisei
        wareki='平成'

    elif array[i]>=2019:
        reiwa=array[i]-2018
        gengou=reiwa
        wareki='令和'

    else:
        shouwa=array[i]-1925
        gengou=shouwa
        wareki='昭和'        
    
    print(str(array[i])+'年 ('+wareki+str(gengou)+')年')

print('\nこの間にうるう年は【'+str(num)+'】回ありました。\n')

最後に別の例と全体のコードを掲載します。
2010年から2040年までの例です。

全体のコードです。

#開始年の入力
print("開始年(西暦)=",end='')
ystart=int(input())

#終了年の入力
print("終了年(西暦)=",end='')
ylast=int(input())

#うるう年格納配列を用意
array=[]

#うるう年に該当する年を配列に格納する
for i in range(ystart,ylast+1):
    if (i%4==0 and i%100!=0) or i%400==0:
        array.append(i)

#配列の長さ、つまりうるう年があった数を数える
num=len(array)

print()
print('うるう年の西暦と和暦を表示します(=^・^=)mm。。。------>>\n')

for i in range(num):
    if array[i]>=1989 and array[i]<2018:
        heisei=array[i]-1988
        gengou=heisei
        wareki='平成'

    elif array[i]>=2019:
        reiwa=array[i]-2018
        gengou=reiwa
        wareki='令和'

    else:
        shouwa=array[i]-1925
        gengou=shouwa
        wareki='昭和'        
    
    print(str(array[i])+'年 ('+wareki+str(gengou)+')年')

print('\nこの間にうるう年は【'+str(num)+'】回ありました。\n')

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

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

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

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

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

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

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

PythonでIF文使って関西人度と関東人度診断をチェック

この記事を読むことで、PythonのIF文をゴリゴリ使い、elif、elseなどの分岐力が鍛えられます。

IF文を鍛えるための具体例として、暇つぶしの診断チェックの代表格的な「関西人度、関東人度」診断を用います。

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

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

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

こちらの10問のうち、7問を使って、プログラミングに出来そうな所をPythonにアレンジしてみました。

まず、私がやってみたコチラの診断結果です。

んーーー、にゃるほど・・・。
千葉生まれ、東京都出身在住なので、まぁこうなるかな。
つまり、自分が選ばなかったものを少し選んでみると、関西人になれそうですね。

まずは、基本的なIF文と標準入力を組み合わせてみます。

YouTubeなどで関西の方が道案内をするとき、「そこ、ガ〜〜〜〜〜〜〜〜〜〜って行って、シュッと曲がって・・・」などと、擬音で案内されることがある様です。

一方関東では、「そこの信号を渡って、左側に曲がって・・・」などといった案内が一般的だと関東人の私は思います。

ここまでの流れをPythonでプログラミングしてみました。
標準入力で数字を扱う場合は、このように記述します。

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

で、ansに標準入力で1または2の解答を入力します。

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

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

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

質問1,2の改行は、「\n」で行っています。
macの場合は「option」+「¥」です。

また、

if ans==1:

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

このコードでは、「あなたが道を教える時は?」と言う質問に対して、「1:この横断歩道を渡って・・・」と答えるか、「2:そこをガ〜〜〜〜って行って・・・」と答えるかで処理が分岐されます。あなたは、1または2の該当する方を選びます。

1を選んだ場合

2を選んだ場合

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

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

まず、p_eastとe_westを0で初期化します。

p_east=0
p_west=0

回答に応じて点数を加算する処理

#回答に応じて関東人、関西人ポイントのそれぞれに加算
if ans==1:
    p_east+=1  
elif ans==2:
    p_west+=1
else:#ポイントを加算する関数
def add_point(x):
    return x+1

    print('数値の1か2を押して下さい。')    

このコードの場合は、答えが1だったら関東人ポイントを

p_east+=1

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

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

変数msgに入れて、最後にprint文で出力することにより、printと書く分量を節約でき、コードが簡潔になりました。

if p_east>p_west:
    msg='あなたは【関東人】です'
elif p_west>p_east:
    msg='あなたは【関西人】です'
else:
    msg='あなたは【ハイブリッド】です'

print(msg)

ここまでを踏まえて、質問の数を2つにします。

#関東人ポイント、関西人ポイントを初期化
p_east=0
p_west=0


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

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



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

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

#関東人ポイントと関西人ポイントのどちらが多いか
if p_east>p_west:
    msg='あなたは【関東人】です'
elif p_west>p_east:
    msg='あなたは【関西人】です'
else:
    msg='あなたは【ハイブリッド】です'

print(msg)

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

例えば、

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

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

質問が2つだけならまだしも、今後質問が増える時にちょっとコードの量が多いので、ここの部分を関数にして見ました。

加算するポイントを引数にして、関数add_pointで加算処理をしています。

#ポイントを加算する関数
def add_point(x):
    return x+1

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

呼び出し元です。

#回答に応じて関東人、関西人ポイントのそれぞれに加算
if ans==1:
    p_east=add_point(p_east)
elif ans==2:
    p_west=add_point(p_west)

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

#1か2以外を入力した場合のエラーメッセージ
def other():
    print("数値の1か2を押して下さい。")

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

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

更に、関東か関西か分岐をする処理の箇所で、

#関東人ポイントと関西人ポイントのどちらが多いか
if p_east>p_west:
    msg='あなたは【関東人】です'
elif p_west>p_east:
    msg='あなたは【関西人】です'
else:
    msg='あなたは【ハイブリッド】です'

この部分を関数judgeとして定義しました。

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

呼び出し元です。

#関東人ポイントと関西人ポイントのどちらが多いか
msg=judge(p_east,p_west)

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

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

このゲームで自分は関東ポイントがどれぐらいか、関西ポイントはどうなのか、といった分かりやすさを追及したいので、下記の行を追記しました。

print('あなたの【関東人ポイント】は【'+str(p_east)+'】で、【関西人ポイント】は【'+str(p_west)+'】です。')

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

#関東人ポイント、関西人ポイントを初期化
p_east=0
p_west=0

#ポイントを加算する関数
def add_point(x):
    return x+1

#1か2以外を入力した場合のエラーメッセージ
def other():
    print("数値の1か2を押して下さい。")


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

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

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



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

#回答に応じて関東人、関西人ポイントのそれぞれに加算
if q==1:
    p_west=add_point(p_west)
elif q==2:
    p_east=add_point(p_east)
else:
    other()

#関東人ポイントと関西人ポイントのどちらが多いか
msg=judge(p_east,p_west)


print('あなたの【関東人ポイント】は【'+str(p_east)+'】で、【関西人ポイント】は【'+str(p_west)+'】です。')

print(msg)

流石に質問が2つだけだと寂しいので、上記の診断から7つ選んでコードを書きました。
各質問に対する回答の標準入力は、q1,q2,・・・,q7まで用意して、それぞれの回答により関東人ポイントと関西人ポイントの加算処理へと分岐させています。

では、適当に選んでみますね。

コードはこちらです。

#関東人ポイント、関西人ポイントを初期化
p_east=0
p_west=0

#ポイントを加算する関数
def add_point(x):
    return x+1

#1か2以外を入力した場合のエラーメッセージ
def other():
    print("数値の1か2を押して下さい。")


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

#質問1
print('いなりずしと言えば?')
print('1:楕円形\n2:三角形')
print('あなたの解答>>>>',end="")
ans=int(input())


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



#質問2
print('よく見かける揚げせんべいは?')
print('1:ぼんち揚げ\n2:歌舞伎揚げ')
print('あなたの解答>>>>',end="")
ans=int(input())

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

#質問3
print('コーヒーなどに付いてくるプラスチックの小さい白い容器は?')
print('1:ミルク\n2:フレッシュ')
print('あなたの解答>>>>',end="")
ans=int(input())


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

    
#質問4
print('長さを測るものは?')
print('1:ものさし\n2:定規')
print('あなたの解答>>>>',end="")
ans=int(input())

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

#質問5
print('「ユニバーサル・スタジオ・ジャパン」は?')
print('1:USJ\n2:ユニバ')
print('あなたの解答>>>>',end="")
ans=int(input())

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

#質問6
print('桜餅と言えば?')
print('1:まんじゅう型\n2:クレープ型')
print('あなたの解答>>>>',end="")
ans=int(input())

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

#質問7
print('いっせーの、')
print('1:「せっ!」\n2:「でっ!」')
print('あなたの解答>>>>',end="")
ans=int(input())


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



#関東人ポイントと関西人ポイントのどちらが多いか
msg=judge(p_east,p_west)


print('あなたの【関東人ポイント】は【'+str(p_east)+'】で、【関西人ポイント】は【'+str(p_west)+'】です。')

print(msg)

お疲れ様でした。

ここまでをまとめると、このプログラムでは、関東ポイントの変数p_eastと、関西ポイントの変数p_westを0で初期化して選択肢ごとに分岐することにより、どちらかのポイントを加算する処理を通してIF文をゴリゴリと学んできました。
また、コードの冗長な部分を関数を使ってメンテナンスも行いました。

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

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

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

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