Closed2

Pythonの基本

あずきあずき

基本的なルール

連結について

  • 異なる型同士の連結は不可
    • 型変換により解決する
    • int()str()と記載することで型変換可能

配列と辞書

配列について

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

辞書について

  • インデックスもクォーテーションで囲む
items = {'apple': 100, 'banana': 200, 'orange': 400}

繰り返し文

if文の記載方法

  • 条件式の末尾にコロン
  • if文の中身を記載する時は、インデント(字下げ)を必ず行う。(半角スペース4つ分)
score = 100

if score == 100:
    print('よくできました')
elif score >= 60:
    print('まずまずです')
else:
    print('頑張りましょう')

for文について

  • if文同様、条件式の末尾にコロン、for文の中身の記載時にはインデントを行う。
  • JSのような変数も用意する。
fruits = ['apple', 'banana', 'orange']

for fruit in fruits:
    print ('好きな果物は' + fruit + 'です')

while文の記載方法

  • while文は「ある条件に当てはまる間、処理を繰り返す」ことが可能。
  • if文・while文同様、条件式の末尾にコロン、while文の中身の記載時にはインデントを行う。
x = 10

while x > 0:
    print (x)
    x -= 1

break

  • for文やwhile文の繰り返しの途中で終了することができる
numbers = [765, 921, 777, 256]
for number in numbers:
    print(number)
    if number == 777:
        print('777が見つかったので処理を終了します')
        break

continue

  • continueはその周の処理をスキップする
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for number in numbers:

    if number % 3 == 0 :
        continue

    print(number)

関数

関数の記載方法

def print_hand(hand, name):
    print(name + 'は' + hand + 'を出しました')

引数の初期値の設定

  • 関数の定義時に初期値を設定することが可能。
  • 関数の呼び出し時に引数の記載が省略されていた場合、初期値が適用される。
def print_hand(hand, name='ゲスト'):
    print(name + 'は' + hand + 'を出しました')

print_hand('グー')
あずきあずき

クラスとメソッド

メソッドについて

  • メソッド(クラス内の関数)を定義する際は、第1引数にselfを追加する必要あり
  • このselfは、メソッドを呼び出したインスタンス自身が代入される。
class MenuItem:
    def info(self):
        print(self.name + ': ¥' + str(self.price))

## インスタンス生成
menu_item1 = MenuItem()
menu_item1.name = 'サンドイッチ'
menu_item1.price = 500

## インスタンスメソッドの呼び出し
menu_item1.info()

### インスタンス生成
menu_item2 = MenuItem()
menu_item2.name = 'チョコケーキ'
menu_item2.price = 400

## インスタンスメソッドの呼び出し
menu_item2.info()

__init__メソッド

  • インスタンス生成時に自動で呼び出されるメソッド(Javaで言うコンストラクタ?)
  • 定義方法は通常のメソッドと同様
  • インスタンス生成時に引数を渡したい場合、この__init__メソッドに引数が渡るよう記載する。
class MenuItem:

    #__init__メソッドの宣言
    def __init__(self, name, price):
        self.name = name
        self.price = pricesele

importとクラス

  • 冒頭にfrom moduleName import classNameと記載することで、muduleName.classNameではなくclassNameと記載するだけで読み込むことが出来るようになる
## モジュールを読み込む場合
import menu_item

menu_item1 = menu_item.Menuitem()

##########################

## クラスを直接読み込む場合
from menu_item import MenuItem

menu_item1 = MenuItem

継承

継承について

  • 継承の際は、class ChildClassName(ParentClassName):と行うことで可能
# 親クラスの読み込み
from menu_item import MenuItem

class Food(MenuItem):
    pass

オーバーライド

  • 親クラスにあるメソッドと同じ穴目のメソッドを子クラスで定義することで上書きができる(オーバーライド)
  • オーバーライドを行うと、メソッドを呼び出した際は子クラスのメソッドが呼び出されるようになる。
  • __init__メソッドもオーバーライド可能

super()

  • オーバーライドしたメソッド中でsuper()とすることで、親クラスを呼び出すことが可能
  • super().methodName()とすることで、親クラス内のインスタンスメソッドをそのまま利用できる。(__init__メソッドも同様)
  • これにより、親クラスのメソッドと同様の処理を子クラスに記載する必要が無くなる。
menu_item
class MenuItem:
    def __init__(self, name, price):
        self.name = name
        self.price = price

    def info(self):
        return self.name + ': ¥' + str(self.price)

    def get_total_price(self, count):
        total_price = self.price * count

        if count >= 3:
            total_price *= 0.9

        return round(total_price)
food
class Food(MenuItem):

    # __init__メソッドの宣言
    def __init__(self, name, price, calorie):

        # 親クラスの__init__メソッドの呼び出し
        super().__init__(name, price)
        
        self.calorie = calorie
    
    def info(self):
        return self.name + ': ¥' + str(self.price) + ' (' + str(self.calorie) + 'kcal)'
    
    def calorie_info(self):
        print(str(self.calorie) + 'kcalです')
このスクラップは18日前にクローズされました