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

PythonⅤ(継承)