Pythonの型
数値
ポイント
- 除算(
/
)は常にfloatを返す - 切り下げ除算を行ってint型を得たい場合は
//
演算子を使う - 剰余を得たい場合は
%
を使う - 演算対象の型が混在していた場合は、整数は浮動小数点数に変換される
- 対話モードでは、最後に表示した式を変数「
_
」に代入してあるので電卓と使用するのに楽 - Pythonでは整数型、浮動小数点数型以外にも、十進数(Decimal)や有理数(Fraction)などがサポートされている
- 複素数もサポートされており、虚部を表現するのに接尾辞に
j
またはJ
を使用して3+5j
などとする
# 足し算
>>> 2+2
4
# 引き算と掛け算
>>> 50 - 5 * 6
20
>>> (50 - 5) *6
270
# 割り算
>>> 17 / 3
5.666666666666667
>>> 17 // 3
5
>>> 17 % 3
2
# 商と剰余を両方取得する
>>> divmod(17, 3)
(5, 2)
# 基数
# 0b: 2進
# 0o: 8進
# 0x: 16進
>>> 0b10
2
>>> 0o10
8
>>> 0x10
16
# 累乗
>>> 5 ** 2
25
>>> 5 ** 3
125
# 対話モードを電卓として使う
>>> _ + 1
126
文字列型
ポイント
- 引用符にはシングルクォート、ダブルクォートどちらも使用でき、区別されない
- クォート文字のエスケープは
\
でできる -
\
を前置した文字列が特殊文字に解釈されるのが嫌な場合はraq文字列を使う - 複数行の文字列はトリプルクォートで表現できる
- 行末文字は自動的に文字列に含まれるが、改行したくない場合は行末に
\
を置くとエスケープされる - 文字列は
+
演算子で結合でき、*
で繰り返すこともできる - 文字列リテラルが連続している場合は自動で連結される
- 文字列はインデックス指定が可能
- インデックスは文字と文字の間を指す数字であり、最初の文字が0番目となる(0から始まる)
- 文字列はスライシングも可能
- インデックスで範囲外の値を指定するとエラーになる
- スライシングは範囲外を指定してもエラーにはならない
- pythonの文字列はimmutableなので、インデックスを利用して文字の改変を行うことはできない(やりたい場合は新たに文字列を生成する)
- len関数は文字列の長さを返す
# パス名には / を使えるので,以下は不要
# raw name (文字列の前にrをつける)
>>> print('C:\some\name')
C:\some
ame
>>> print(r'C:\some\name')
C:\some\name
# 複数行
print("""\
Usage: thingy [OPTIONS]
-h Display this usage message
-H hostname
""")
# 出力
Usage: thingy [OPTIONS]
-h Display this usage message
-H hostname
# 文字列の繰り返しと連結
>>> 3 * "un" + "ium"
'unununium'
# 文字列リテラルの自動連結(変数では使えない)
>>> 'Py' 'thon'
'Python'
# index
>>> word[0]
'P'
>>> word[-1]
'n'
# slice
>>> word[:3]
'Pyt'
>>> word[3:]
'hon'
# len
>>> len(word)
6
リスト
ポイント
- 基本的には同じ型を入れる
- 文字列同様、インデックスとスライシングが使える
- スライシングは常に要求された要素を含んだ新たなリストを返す
- リストは文字列と違ってmutableなので変更可能
-
.append
で末尾に要素を追加する - スライシングへの代入も可能
- len関数はリストにも使える
- リストは入れ子にできる
# リスト
>>> letters = ['a', 'b', 'c', 'd', 'e', 'f']
# index
>>> letters[1]
'b'
# slicing
>>> letters[3:]
['d', 'e', 'f']
# append
>>> letters.append('g')
>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']
# slicingへの代入
>>> letters[3:5] = ['D', 'E']
>>> letters
['a', 'b', 'c', 'D', 'E', 'f', 'g']
# len
>>> len(letters)
7
# 入れ子のリスト
>>> array = [['a', 'b', 'c'], [1, 2, 3]]
フィボナッチ数列を求める
# フィボナッチ級数
# このように多重代入が可能
a, b = 0, 1
while b < 10:
print(b)
a, b = b, a+b
print関数について
- 複数値を引数に指定可能
- キーワード引数endを使うと、出力末尾の改行の抑制や、出力末尾を他の文字列に変更することができる
- キーワード引数sepを使うと、出力される値を区切る文字列を変更できる
name = 'Kawausomando'
# 複数値指定(間にはスペースが付与される)
print('My name is', name)
# 出力: My name is Kawausomando
# endキーワード
print(name, end=' is my name')
# 出力: Kawausomando is my name
# sepキーワード
print(1, 2, 3, sep=' and ')
# 出力: 1 and 2 and 3