Pythonで開発しようとしていたらだいぶ文法を忘れていたので復習。
##print()
python3では()が必須, ()がないとSyntaxErrorになる。
print('hoge')
=> hoge
- 改行しない書き方
print関数はデフォルトは改行するようになっている
first_name = 'Bryan'
last_name = 'Cranston'
print(first_name)
print(last_name)
=> Bryan
Cranston
改行しないようにするにはendオプションに空文字を指定
print(first_name, end='')
print(last_name)
=> Bryan Cranston
print関数は引数に文字列を複数入れられるが、間に半角スペースが入ってしまう
state = 'ニューメキシコ州'
city = アルバカーキ
print (state, city)
=> ニューメキシコ州 アルバカーキ # 半角スペースが入る
半角スペースを入れたくない時もendオプションに空文字を指定
print(state, end='')
print(city)
=> ニューメキシコ州アルバカーキ
文字列の連結
=> f文字列を使う
上の例では、文字列を連結すれば済む話なので、連結の方法を書きます
print(f'{state}{city}')
=> ニューメキシコ州アルバカーキ
ダブルクォーテーションでも三連クォーテーションでも書けます
print(f"{state}{city}")
print(f'''{state}{city}''')
print(f"""{state}{city}""")
=> ニューメキシコ州アルバカーキ
三連クォーテーション
=> 複数行の文字列を定義するときに使用
text = '''
余命わずかの高校教師が家族のために挑む危険な副業。
それは麻薬の精製だった…。
サスペンス・ブラックユーモア・家族愛が奇跡の科学反応を起こしたドラマ。
'''
print(text)
=>
余命わずかの高校教師が家族のために挑む危険な副業。
それは麻薬の精製だった…。
サスペンス・ブラックユーモア・家族愛が奇跡の科学反応を起こしたドラマ。
最初の'''の直後から文字列なので最初に改行が入ってしまっている
最初に改行をしたくないときは \
マークを入れる
text = '''\
余命わずかの高校教師が家族のために挑む危険な副業。
それは麻薬の精製だった…。
サスペンス・ブラックユーモア・家族愛が奇跡の科学反応を起こしたドラマ。
'''
print(text)
=> 余命わずかの高校教師が家族のために挑む危険な副業。
それは麻薬の精製だった…。
サスペンス・ブラックユーモア・家族愛が奇跡の科学反応を起こしたドラマ。
タプル型
タプル型とは変更不可の配列のこと
タプルの方が配列より実行速度が速い
# 書式
hoge = (1, 2, 3, 4, 5)
# タプルは()を省略できる
hoge = 1, 2, 3, 4, 5
ミュータブルとイミュータブル
変更可能な型をミュータブル
変更不可な型をイミュータブル
配列はミュータブル(変更可)、文字列や整数はイミュータブル(変更不可)
# 配列はミュータブル
arr = [1, 2, 3, 4, 5]
arr[2] = 4
print(arr)
#=> [1, 2, 4, 4, 5]
# タプルはイミュータブル
tuple = (1, 2, 3, 4, 5)
tuple[2] = 4
#=> TypeError
# 配列をタプルにする
tuple(arr)
# タプルを配列にする
list(tuple)
# タプルで値が1つしかないものを作るときはカンマを書く
# NG
tuple = ('hoge')
print(type(tuple))
#=> <class 'str'>
# OK
tuple = ('hoge', )
print(type(tuple))
#=> <class 'tuple'>
モジュールを使う
# インポート
# import モジュール名
import calendar
# クラスを読み込む
# from モジュール名 import クラス名1, クラス名2...
from calendar import TextCalendar
# モジュールのクラスからインスタンス生成
# モジュール名.クラス名(引数)
calendar = calendar.TextCalendar(firstweekday=6)
in演算子
=> 要素があるか調べる
drama = 'prison break'
movie = 'dark night'
dramas = ['24', 'prison break', 'lost', 'breaking bad']
drama in dramas
#=> True
movie in dramas
#=> False
# not in で要素がないか調べる
drama not in dramas
#=> False
movie not in dramas
#=> True
三項演算子(Pythonでは条件式という名前)
# 書式
# 変数 = 真の場合 if 条件 else 偽の場合
age = 19
msg = 'お酒NG' if age < 20 else 'お酒OK'
print(msg)
#=> お酒NG
for文
# 書式
# for 変数 in イテレート可能なオブジェクト:
# 処理
artists = ['ダヴィンチ', 'ミケランジェロ', 'ルーベンス']
for artist in artists:
print(artist)
#=> ダヴィンチ
ミケランジェロ
ルーベンス
# range()を使って指定回数繰り返す
for i in range(3):
print(i)
#=> 0
1
2
# for文1行目「:(コロン)」をとにかく忘れやすい
# Pythonではインデントをそろえた部分がブロックとなっている
if文
# 書式
# if 条件式1:
# 処理1
# elif 条件式2:
# 処理2
# else:
# 処理3
elif...elif...$\mathbb{elif}$
クラス定義
# class クラス名:
# def メソッド名(引数):
class DragonQuestYourStory:
def throw_poop(mental):
mental * 0.8
コロン地獄
while
# 書式
# while 条件式:
# 処理
# 処理
# 無限ループ
# while (True):
# 処理
# 処理
# IoTだと無限ループ使うと思いますが、どこかでbreakを入れる
num = 0
while True:
if num > 10:
print('試行回数10回を超えました')
break
num += 1
とりあえず今回はここまで。本当にコロン忘れがち。