16. ProgateでPythonⅠ~Ⅴ

PythonⅠ(基本操作)

文字列と数値の出力

print('Hello Python')
print(3 + 7)
print(3 / 2)
print(7 % 3)

変数の定義

name = 'John'
number = 24

変数の値の取り出し

name = 'John'
print(name)
print('name')

# 実行結果
John
name

変数の値の取り出し

# 基本形			省略形
x = x + 10	⇒ x += 10
x = x - 10	⇒ x -= 10
x = x * 10	⇒ x *= 10
x = x / 10	⇒ x /= 10
x = x % 10	⇒ x %= 10

入力を受け取る

input_count = input('購入するりんごの個数を入力してください:')
 :
print('購入するりんごの個数は' + input_count + '個です')

# 実行結果
購入するりんごの個数を入力してください:3
購入するりんごの個数は3個です

型変換str
データ型の異なる文字列型と数値型を連結するとエラーになります。数値型を文字列型に変換すると、連結ができるようになります。

price = 100
print('りんごの価格は' + str(price) + '円です')

if文

score = 80
if score == 100:
	print('よくできました!')

真偽値

score = 100
print(score == 100)

# 実行結果
True

比較演算子

x < y
x <= y x > y
x >= y
x == Y
x != y

条件分岐

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

論理演算子

time = 14
if time > 10 and time < 18:		# and
	print('就業時間です')

time = 15
if time == 10 or time == 15:			# or
	print('おやつの時間です')

time = 9
if not time == 18:					# not
	print('退社時刻ではありません')
#<>

完成版

apple_price = 200
money = 1000

input_count = input('購入するりんごの個数を入力してください:')
count = int(input_count)
total_price = apple_price * count

print('購入するりんごの個数は' + str(count) + '個です')
print('支払い金額は' + str(total_price) + '円です')

# moneyとtotal_priceの比較結果によって条件分岐
if money > total_price:
    print('りんごを' + str(count) + '個買いました')
    print('残金は' + str(money - total_price) + '円です')
elif money == total_price:
    print('りんごを' + str(count) + '個買いました')
    print('財布が空になりました')
else:
    print('お金が足りません')
    print('りんごを買えませんでした')

# 実行結果
購入するりんごの個数を入力してください:3
購入するりんごの個数は3個です
支払い金額は600円です
りんごを3個買いました
残金は400円です

PythonⅡ(繰り返し処理)

リストに変数を代入

foods = ['pasta', 'curry', 'sushi']
print(foods)
print('好きな食べ物は' + foods[2] + 'です')

# 実行結果
['pasta', 'curry', 'sushi']
好きな食べ物はsushiです

リストの要素を更新

foods = ['pasta', 'curry', 'sushi']
foods[1] = 'pizza'
print(foods)

# 実行結果
['pasta', 'pizza', 'sushi']

リストに要素を追加

foods = ['pasta', 'curry', 'sushi']
foods.append('pizza')
print(foods)

# 実行結果
['pasta', 'pizza', 'sushi', 'pizza']

for文

foods = ['pasta', 'curry', 'sushi']
for food in foods:							# 行末にコロンを付与する
	print('好きな食べ物は' + food + 'です')

# 実行結果
好きな食べ物はpastaです
好きな食べ物はcurryです
好きな食べ物はsushiです

辞書の要素の取り出し方

fruits = {'apple': 'red', 'banana': 'yellow'}
print('appleの色は' + fruits['apple'] + 'です')

fruits['apple'] = 'green'
print('appleの色は' + fruits['apple'] + 'です')

fruits['peach'] = 'pink'
print(fruits)

# 実行結果
appleの色はredです
appleの色はgreenです
{'apple': green, 'banana': 'yellow', 'peach': 'pink'}

辞書の要素を全て取得

fruits = {'apple': 'red', 'banana': 'yellow', 'grape': 'purple'}
for fruit_name in fruits:
	print(fruit_name + 'の色は' + fruits[fruit_name] + 'です')

# 実行結果
appleの色はredです
bananaの色はyellowです
grapeの色はpurpleです

while文

x = 1
while x < = 100:
	print(x)
	x += 1				# インデントが必要
#<>

break

numbers = [1, 2, 3, 4, 5, 6]
for number in numbers:
	print(number)
	if number == 3:
		break			# 繰り返し処理を終了

# 実行結果
1
2
3

continue

numbers = [1, 2, 3, 4, 5, 6]
for number in numbers:
	if number % 2 == 0:
		continue			# この周の処理だけをスキップ
	print(number)

# 実行結果
1
3
5

完成版(お買い物プログラム)

money = 1000
items = {'apple': 100, 'banana': 200, 'orange': 400}
for item_name in items:
    print('--------------------------------------------------')
    print('財布には' + str(money) + '円入っています')
    print(item_name + 'は1個' + str(items[item_name]) + '円です')
    
    input_count = input('購入する' + item_name + 'の個数を入力してください:')
    print('購入する' + item_name + 'の個数は' + input_count + '個です')
    
    count = int(input_count)
    total_price = items[item_name] * count
    print('支払い金額は' + str(total_price) + '円です')
    
    if money >= total_price:
        print(item_name + 'を' + input_count + '個買いました')
        money -= total_price
        if money == 0:					# moneyの値が0の時処理を終了
            print('財布が空になりました')
            break
    else:
        print('お金が足りません')
        print(item_name + 'を買えませんでした')

print('残金は' + str(money) + '円です')

# 実行結果
--------------------------------------------------
財布には1000円入っています
appleは1個100円です
購入するappleの個数を入力してください:2
購入するappleの個数は2個です
支払い金額は200円です
appleを2個買いました
--------------------------------------------------
財布には800円入っています
bananaは1個200円です
購入するbananaの個数を入力してください:5
購入するbananaの個数は5個です
支払い金額は1000円です
お金が足りません
bananaを買えませんでした
--------------------------------------------------
財布には800円入っています
orangeは1個400円です
購入するorangeの個数を入力してください:2
購入するorangeの個数は2個です
支払い金額は800円です
orangeを2個買いました
財布が空になりました
残金は0円です

PythonⅢ(関数&モジュール)

関数の使い方

def hello():				# 関数の定義
	print('Hello World')

hello()						# 関数の呼び出し

関数に引数を渡す

def hello(name):			# 仮引数
	print('Hello' + name)

hello('John')				# 'John'が仮引数 name に代入される
hello('Kate')

関数に複数の引数を渡す

def hello(name, message):				# コンマで区切って定義する
	print(name + 'さん、' + message)

hello('John', 'こんにちは')

引数の初期値

def hello(name, message='こんにちは'):	# 初期値を設定
	print(name + 'さん、' + message)

hello('John', 'こんばんは')
hello('Kate')				# 引数 message を省略した場合、初期値が用いられる

# 実行結果
Johnさん、こんばんは		# 引数に指定した値が代入
Kateさん、こんにちは		# 初期値が代入

戻り値

def add(a,b)
	return a + b

sum = add(1, 3)
print(sum)

モジュールの読み込み

# utils.py
def validate(hand):
	:
def print_hand(hand, name='ゲスト'):
	:
def judge(player, computer):
	:
# script.py
import utils					# utilsモジュールの読み込み
	:
if utils.validate(player_hand):		# 「モジュール名.関数名」でモジュールの関数を実行する
	computer = 1
	utils.print_hand(player_hand, player_name)
		:

標準ライブラリ
Pythonにあらかじめ用意されているモジュール標準ライブラリと呼ばれ、importを用いて読み込むことで、便利な関数を利用できるようになります。

# mathモジュール
sin()
cos()
tan()

# randomモジュール
random()
randint()
shuffle()

# datetimeモジュール
date()
time()
datetime()

randomモジュール

import utils
import random					# randomモジュールの読み込み
	:
if utils.validate(player_hand):
	computer_hand = random.randint(0, 2)	# randint関数を用いて、0-2の数値をランダムに取得
		:

完成版(じゃんけんゲーム)

# utils.py
def validate(hand):
    if hand < 0 or hand > 2:
        return False
    return True

def print_hand(hand, name='ゲスト'):
    hands = ['グー', 'チョキ', 'パー']
    print(name + 'は' + hands[hand] + 'を出しました')

def judge(player, computer):
    if player == computer:
        return '引き分け'
    elif player == 0 and computer == 1:
        return '勝ち'
    elif player == 1 and computer == 2:
        return '勝ち'
    elif player == 2 and computer == 0:
        return '勝ち'
    else:
        return '負け'
# script.py
import utils
import random

print('じゃんけんをはじめます')
player_name = input('名前を入力してください:')
print('何を出しますか?(0: グー, 1: チョキ, 2: パー)')
player_hand = int(input('数字で入力してください:'))

if utils.validate(player_hand):
    computer_hand = random.randint(0, 2)	# randintを用いて0から2までの数値を取得
    
    if player_name == '':
        utils.print_hand(player_hand)
    else:
        utils.print_hand(player_hand, player_name)

    utils.print_hand(computer_hand, 'コンピューター')
    
    result = utils.judge(player_hand, computer_hand)
    print('結果は' + result + 'でした')
else:
    print('正しい数値を入力してください')
# 実行結果
じゃんけんをはじめます
名前を入力してください:taro
何を出しますか?(0: グー, 1: チョキ, 2: パー)
数字で入力してください:
taroはグーを出しました
コンピューターはチョキを出しました
結果は勝ちでした

PythonⅣ(クラス)

クラスの定義

class MenuItem:
	pass							# 「何も処理がない」ことを表す

menu_item1 = MenuItem()				# MenuItemクラスからインスタンスを生成
menu_item1.name = 'サンドイッチ'		# インスタンスに情報を追加する
print(menu_item1.name)

メソッド
クラスの中で定義した関数のことをメソッドと呼びます。

class MenuItem:
	def hello(self):		# 必ず第1引数にselfを追加する!
		print('こんにちは!')

menu_item1 = MenuItem()
menu_item1.hello()			# クラスの中で定義したメソッドを呼び出す(インスタンスメソッド)

インスタンスメソッドのselfの正体

class MenuItem:
	def info(self):			# 「self」には、そのメソッドを呼び出したインスタンス自身「menu_item1」が代入される
		print(self.name)	# menu_item1.nameの値が出力される

menu_item1 = MenuItem()
menu_item1.name = 'サンドイッチ'
menu_item1.info()

__init__メソッド

class MenuItem:
	def __init__(self):		# インスタンスが生成されると自動で呼び出され、処理が実行される
		print('メニューが生成されました')
	:
menu_item1 = MenuItem()

# 出力結果
メニューが生成されました

__init__メソッドでインスタンス変数を扱う

class MenuItem:
	def __init__(self):
		self.name = 'サンドイッチ'	# インスタンス生成直後に'サンドイッチ'をインスタンス変数nameに代入

menu_item1 = MenuItem()
print(menu_item1.name)

# 出力結果
サンドイッチ

__init__メソッドの引数

class MenuItem:
	def __init__(self, name):	# __init__メソッドも通常のインスタンスメソッドと同じように引数を受け取れる
		self.name = name

menu_item1 = MenuItem('チョコケーキ')
print(menu_item1.name)

# 出力結果
チョコケーキ

クラスを直接読み込む

# menu_item.py
class MenuItem:
	def __init__(self, name, price):
		self.name = name
		self.price = price
# script.py
# 「from モジュール名 import クラス名」とすることで、そのモジュール内の指定したクラスを直接読み込む
from menu_item import MenuItem

# モジュール名.クラス名(・・・)ではなく、そのままMenuItemクラスが使用できる
menu_item1 = MenuItem('サンドイッチ', 500)

番号を付ける

lessons = ['Python', 'Ruby', 'java']
index = 0
for lesson in lessons:
	print(str(index) + '.' + lesson)
	index += 1

# 出力結果
0. Python
1. Ruby
2. Java

数値を受け取る

menu_items = [menu_item1, menu_item2, ・・・]
order = int(input('メニューの番号を入力してください:'))	# コンソールから受け取った入力を数値に変換
selected_menu = menu_items[order]

四捨五入

number = 7 * 0.9
print(round(number))		# 6.3を四捨五入

# 出力結果
6

合計金額を1割引にする

# menu_item.py
class MenuItem
	def get_total_price(count):
		total_price = self.price * count

	if count >= 3:
		total_price *= 0.9	# 変数total_priceに0.9を掛けて値を更新
	return total_price
result = selected_menu.get_total_price(4)
print(result)

# 出力結果
1440.0

完成版(料理注文システム)

# menu_item.py
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:						# countが3以上の時は1割引き
            total_price *= 0.9
        
        return round(total_price)			# total_priceを四捨五入
# script.py
from menu_item import MenuItem

menu_item1 = MenuItem('サンドイッチ', 500)
menu_item2 = MenuItem('チョコケーキ', 400)
menu_item3 = MenuItem('コーヒー', 300)
menu_item4 = MenuItem('オレンジジュース', 200)

menu_items = [menu_item1, menu_item2, menu_item3, menu_item4]

index = 0

for menu_item in menu_items:
    print(str(index) + '. ' + menu_item.info())
    index += 1

print('--------------------')

order = int(input('メニューの番号を入力してください: '))
selected_menu = menu_items[order]
print('選択されたメニュー: ' + selected_menu.name)

count = int(input('個数を入力してください(3つ以上で1割引): '))	# コンソールから入力を受け取る
result = selected_menu.get_total_price(count)				# get_total_priceメソッドを呼び出し
print('合計は' + str(result) + '円です')						# 合計金額を出力
# 出力結果
0. サンドイッチ: ¥500
1. チョコケーキ: ¥400
2. コーヒー: ¥300
3. オレンジジュース: ¥200
--------------------
メニューの番号を入力してください: 3
選択されたメニュー: オレンジジュース
個数を入力してください(3つ以上で1割引): 3
合計は540円です

PythonⅤ(継承)

継承

# food.py
from menu_item import MenuItem
class Food(MenuItem):			# MenuItem(親クラス)を継承してFood(子クラス)を作成
	pass

子クラスのインスタンス

# menu_item.py
class MenuItem:
	 :
	def info(self):
		return self.name + ':\' + str(self.price)
		 :
# script.py
from food import Food
food1 = Food('サンドイッチ', 500)	# FoodクラスはMenuItemクラスを継承している
print(food1.info())				# 親クラスのインスタンス変数

# 出力結果
サンドイッチ:\500

子クラスにインスタンスメソッド追加

# food.py
class Food(MenuItem):
	def calorie_info(self):		# Foodクラス内に独自のインスタンスメソッドを追加できる
		:

メソッドのオーバーライド

# script.py
from food import Food
food1 = Food('サンドイッチ', 500)
food1.calorie = 330
print(food1.info())
# food.py
class Food(MenuItem):
	def info(self):				# 上書きされたinfoメソッドが呼び出される
		return ・・・

親クラスの呼び出し(super)

# menu_item.py
class MenuItem:
	def __init__(self, name, price):
		self.name = name
		self.price = price
# food.py
class Food(MenuItem):
	def __init__(self, name, price, calorie):
		super().__init__(name, price)		# 親クラスの__init__メソッドを利用
		self.calorie = calorie

完成版(料理注文システム)

# script.py
from food import Food
from drink import Drink

food1 = Food('サンドイッチ', 500, 330)
food2 = Food('チョコケーキ', 400, 450)
food3 = Food('シュークリーム', 200, 180)

foods = [food1, food2, food3]

drink1 = Drink('コーヒー', 300, 180)
drink2 = Drink('オレンジジュース', 200, 350)
drink3 = Drink('エスプレッソ', 300, 30)

drinks = [drink1, drink2, drink3]

print('食べ物メニュー')
index = 0
for food in foods:
    print(str(index) + '. ' + food.info())
    index += 1

print('飲み物メニュー')
index = 0
for drink in drinks:
    print(str(index) + '. ' + drink.info())
    index += 1

print('--------------------')

food_order = int(input('食べ物の番号を選択してください: '))
selected_food = foods[food_order]

drink_order = int(input('飲み物の番号を選択してください: '))
selected_drink = drinks[drink_order]

# コンソールから入力を受け取り、変数countに代入
count = int(input('何セット買いますか?(3つ以上で1割引): '))

# selected_foodとselected_drinkのそれぞれに対して、get_total_priceメソッドを呼び出す
result = selected_food.get_total_price(count) + selected_drink.get_total_price(count)

# 合計金額を出力
print('合計は' + str(result) + '円です') 
# menu.py
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.py
from menu_item import MenuItem

class Food(MenuItem):
    def __init__(self, name, price, calorie):
        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です')
# drink.py
from menu_item import MenuItem

class Drink(MenuItem):
    def __init__(self, name, price, amount):
        super().__init__(name, price)
        self.amount = amount

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

 

Pythonのコーディング規約 にも目を通しておくとよいと思います!

[siteorigin_widget class=”AdWidgetItem”][/siteorigin_widget]
[siteorigin_widget class=”WP_Widget_Pages”][/siteorigin_widget]
[siteorigin_widget class=”AdWidgetItem”][/siteorigin_widget]
タイトルとURLをコピーしました