概要
Pythonノート基本系 (自分用メモ)
基本
文・式
基本的にインタープリタなので1文ずつ解釈して動作
改行が文の区切りになる
print("Hello")
print("Goodbye")
コロンで区切っても良い
>>> print("Hello"); print("Goodbye")
Hello
Goodbye
コメント
#
で始まる行はコメントとして扱われる
# comment xxxx
制御構文
インデント
制御構文のブロックは一般的に括弧{ ...... }で表すことが多いが、pythonはインデントによってブロックを表現する
if文
if a is b:
print("a is equal to b")
else:
print("a is not equal to b")
while文
while condition:
でブロックを始める。
else:
節を記載した場合ブロックは一度だけ実行される
while a < b:
print(f"a = {a}")
a += 1
else:
print(f"a = {a} (end)")
for文
forはシーケンス型(list, tuple...)の各要素に対して処理を繰り返す
for 変数 in リスト:
のように記載
else:
節がある場合は最後に一度だけブロックを実行
>>> for i in [1,2,3,4]:
... print(f"i={i}")
... else:
... print("end")
i=1
i=2
i=3
i=4
end
range関数
range関数は整数などのシーケンスを作成するのに便利
書式は range(start, stop [, step])
start省略時はstart=0, step省略時はstep=1
>>> for num in range(0, 4):
... print(num)
...
0
1
2
3
戻り値はrange型のオブジェクト (class 'range')
>>> r = range(3)
>>> r
range(0, 3)
>>> type(r)
<class 'range'>
break / continue
break/continueは他言語同様
breakはループを脱出、continueは処理をスキップし次のインデックスの処理から再開する。
for i in range(10):
if i != 3:
print(f"i=={i}")
else:
print("i==3 => break")
break
for i in range(10):
if i != 3:
print(f"i=={i}")
else:
print("i==3 => skip")
continue
演算子
算術演算子
種類 | 記法 | 例 |
---|---|---|
加算 | + |
a = 1 + 2 |
減算 | - |
a = 3 - 2 |
乗算 | * |
a = 2 * 2 |
累乗 | * |
a = 2 ** 3 |
除算(結果はfloat) | / |
a = 125 / 23 (a = 5.434782608695652 ) |
除算(余りは切り捨て) | // |
a = 125 // 23 (a = 5) |
剰余 | % |
a = 125 % 23 (a = 10) |
ビット演算子
種類 | 記法 |
---|---|
AND | a & b |
OR | a | b |
XOR | a ^ b |
左シフト(算術) | a >> n |
右シフト(算術) | a << n |
論理(bool)演算子
種類 | 記法 |
---|---|
and | a and b |
or | a or b |
not | not b |
比較演算子
種類 | 記法 |
---|---|
等しい | a == b |
異なる | a != b |
~より小さい | a < b |
~より大きい | a > b |
~以下 | a <= b |
~以上 | a >= b |
等しい | a is b |
異なる | a is not b |
に含まれる(bはシーケンス型) | a in b |
に含まない(bはシーケンス型) | a not in b |
組み込み型
型を調べる
-
type()
関数を使う - 整数(int)型の場合
>>> num = 10
>>> type(num)
<class 'int'>
数値型 int / float / complex
公式 docs.python.org: 数値型 int, float, complex
int(整数)
>>> num = 3
0x
0o
0b
で始まる値は16進数、8進数、2進数で記載した数値として扱われる
>>> 0x20
32
>>> 0o20
16
>>> 0b10
2
float(浮動小数点型)
>>> type(0.02)
<class'float'>
e'n(整数)'
で10のn乗を表す
>>> 0.24e-3
0.00024
complex(複素数型)
虚数をj
で記載して複素数を表す
>>> cmp = 1 + 2j
>>> type(cmp)
<class'complex'>
str 文字列型
シングル;/ダブルクォートで囲んだ値は文字列リテラル(=定数)となる。
>>> s = 'abc'
>>> type(s)
<class'str'>
bool ブール型
True
,False
で記載
>>> B = True
>>> C = False
>>> A and B
False
list リスト型
[ ]
で囲んだ値がリスト(いわゆる配列)
>>> list_1 = [ 3, 7, 'abc', 2+3j]
>>> list_1
[3, 7, 'abc', (2+3j)]
>>> type(list_1)
<class'list'>
tuple タプル型
( )
で囲んだ値がタプル(書き換え不可なリスト)
>>> tpl = (5,6,'tuple')
>>> tpl
(5, 6, 'tuple')
>>> type(tpl)
<class'tuple'>
dict ディクショナリ型
{ }
で囲んだ値がディクショナリ(辞書型=ハッシュ型)
>>> dct = {'age':10, 'name':'Bob', 'job':'null'}
>>> dct
{'age': 10, 'name': 'Bob', 'job': 'null'}
>>> dct['name']
'Bob'
>>> type(dct)
<class'dict'>
内包表記 [式 for 変数名 in シーケンス型オブジェクト]
リストなどシーケンス型の各要素に対して演算した結果をリスト(など)に格納できる
>>> a = [2,5,6]
リストの各要素の2倍の値のリスト
>>> [i * 2 for i in a]
[4, 10, 12]
bytes型
文字列リテラルにプレフィックスbをつけたものはbytes型となる
>>> b = b'abc'
>>> type(b)
<class'bytes'>
また文字列型オブジェクトに対しencode(),decode()メソッドを使用してbyte型に変換できる
>>> s = 'abc'
>>> s.encode()
b'abc'
型変換
数値↔文字列変換
int(文字列, base)
- 16進数 base=16
>>> int('20', 16)
32
- 10進数 base=10
>>> int('20', 10)
20
- base=2
>>> int('100', 2)
4
str(整数)
- 整数(10進) →文字列
>>> str(20)
'20'
- 整数(16進) →文字列
>>> str(0x20)
'32'
文字列format
formatメソッド
-
format()
メソッドでの表示 - 記載方法 :
"本文 {:フォーマット}".format(変数)
>>> name = 'bob'
>>> age = 33
>>> print("Name is {:s}. Age is {:d}".format(name, age))
Name is bob. Age is 33
f文字列
- f文字列でもformatメソッド同様の出力ができる
- 記載方法 :
f"本文 {変数:フォーマット}"
>>> print(f"Name is {name:s}. Age is {age:d}")
Name is bob. Age is 33
字下げ、桁揃えのフォーマット指定
- 右揃えは
>
, 左揃えは<
で指定。
>>> print(f"Age: {age:>3d}")
Age: 33
^^^ 3文字で右寄せ (空白埋め)
>>> print(f"Age: {age:<3d}")
Age: 33
^^^ 3文字で左寄せ
- 0埋めの指定
>>> print(f"Age: {age:>03d}")
Age: 033
^^^ 3文字で右寄せ (0埋め)
%
を使った書式化
>>> print("Age: %03d" % age)
Age: 033