2章 Pyの成分:数値、文字列、変数
この章では、Pythonのもっとも単純な組み込みデータ型であるブール値、整数、浮動小数点数、文字列と、それらを指し示す「変数」について学びます。
2.1 変数、名前、オブジェクト
Section titled “2.1 変数、名前、オブジェクト”Pythonでは、データ構造や関数など、すべてが「オブジェクト」として実装されています。
- オブジェクトの性質: オブジェクトには型(intなど)があり、そのデータで何ができるかが決まります。また、値を変更できるか(ミュータブル)、できないか(イミュータブル)も型によって決まります。
- 変数はただの「名前」: Pythonの変数は値そのものを格納する箱ではなく、オブジェクトに貼り付ける「付箋(ラベル)」のようなものです。
# aという名札を「7」というオブジェクトに貼るa = 7# bという名札も、同じ「7」のオブジェクトに貼るb = a
# 型を確認するには type() を使うprint(type(a)) # <class 'int'>2.2 数値
Section titled “2.2 数値”Pythonには、整数(int)と浮動小数点数(float)のサポートが組み込まれています。
算術演算子と除算の特徴
Section titled “算術演算子と除算の特徴”一般的な四則演算に加え、Python特有の便利な演算子があります。
/は浮動小数点数の除算を行います。//は切り捨ての整数除算を行います。divmod()を使うと、商と剰余(余り)を同時にタプルとして取得できます。
print(9 / 5) # 1.8 (浮動小数点数)print(9 // 5) # 1 (整数の切り捨て除算)print(9 % 5) # 4 (剰余)print(divmod(9, 5)) # (1, 4)基数と型の変換
Section titled “基数と型の変換”- 基数: 2進数は
0b、8進数は0o、16進数は0xを先頭に付けます。 - 型の変換:
int()やfloat()を使って他の型から変換できます。
print(0b10) # 2進数の2print(0x10) # 16進数の16
print(int(98.6)) # 98 (小数部は切り捨てられる)print(float('98.6')) # 98.62.3 文字列
Section titled “2.3 文字列”Pythonの文字列は、文字のシーケンスであり、**イミュータブル(書き換え不可)**です。
文字列の作成と連結・繰り返し
Section titled “文字列の作成と連結・繰り返し”- シングルクォート(
')またはダブルクォート(")で作ります。 - 3個のクォート(
'''または""")を使うと、改行を含む複数行の文字列を作成できます。 +で連結し、*で繰り返します。
start = 'Na ' * 4end = 'Batman!'print(start + end) # Na Na Na Na Batman!抽出とスライス
Section titled “抽出とスライス”[オフセット]で1文字を抽出します(先頭は0、末尾は-1)。[start:end:step]で部分文字列(スライス)を抽出します。
letters = 'abcdefghijklmnopqrstuvwxyz'
print(letters[0]) # a (先頭)print(letters[-1]) # z (末尾)print(letters[12:15]) # mno (オフセット12から14まで)print(letters[::-1]) # zyx...cba (ステップに-1を指定すると逆順になる)便利な組み込み文字列関数
Section titled “便利な組み込み文字列関数”文字列操作には多数の便利な関数(メソッド)が用意されています。
len(): 文字数を取得します。split(): セパレータで分割してリスト化します。join(): リストを文字列として結合します。replace(): 部分文字列を置換します。- 大文字・小文字の操作:
capitalize(),upper(),lower(),swapcase()などが用意されています。
# 分割と結合todos = 'get gloves, get mask'todo_list = todos.split(', ') # ['get gloves', 'get mask']print(' & '.join(todo_list)) # get gloves & get mask
# 置換と文字変換setup = 'a duck goes into a bar...'print(setup.replace('duck', 'marmoset')) # a marmoset goes into a bar...print(setup.upper()) # A DUCK GOES INTO A BAR...