-Python- 数値と文字列

数値について
数列の演算には,四則演算として足し算(+),引き算(-),掛け算(*),割り算(/)があります.その他に整数範囲での割り算(//),割り算のあまり(%),べき乗(**)があります.以下に例を示します.

>>> 3 + 5
8
>>> 3 - 4
-1
>>> 4 * 5
20
>>> 3 / 2
1.5
>>> 5 // 2
2
>>> 5 % 2
1
>>> 2 ** 3
8
 
数値型には主に整数型(int),浮動小数点型(float)複素数型(complex)があります.変数の型はtype関数で調べることができます.以下に例を示します.
>>> a = 2
>>> b = 1.2
>>> type(a)
<class 'int'>
>>> type(b)
<class 'float'>
>>> c = a + b
>>> c
3.2
>>> d = 3.
>>> type(d)
<class 'float'>
>>> a + d
5.0
>>> e = 1.2e5
>>> type(e)
<class 'float'>
>>> f = 1e-3
>>> f
0.001
>>> type(f)
 
<class 'float'>
上記の例でもわかるように整数型と浮動小数点型の和は浮動小数点型になります.
 
数学的関数は,import math によって math モジュールをインポートして,math.(関数名) で呼び出すことが可能です.
>>> import math
>>> math.sqrt(2)
1.4142135623730951
>>> math.exp(3)
20.085536923187668
>>> math.log(5)
1.6094379124341003
>>> math.cos(math.pi)
-1.0
>>> math.sin(math.pi / 2)
1.0
>>> math.tan(math.pi / 4)
0.9999999999999999
 
Pythonにおいて変数は,多くのスクリプト言語と同様,あらかじめ型宣言をせずに,代入するだけで利用することが可能です.これらは,二項演算子に関しても同様です.
>>> a = 1
>>> a += 1
>>> a
2
>>> a *= 2
>>> a
4
>>> 
 
文字列について
文字列はダブルクォート,またはシングルクォートで括ることで表現可能です.
>>> a = "Hello"
>>> b = 'Hi'
>>> c = """Example
... of
... multiple
... lines"""
>>> d = '''Another
... example
... of
... multiple
... lines'''
>>> print(a)
Hello
>>> print(b)
Hi
>>> print(c)
Example
of
multiple
lines
>>> print(d)
Another
example
of
multiple
lines
 
文字列の長さ(文字数)の取得にはlen関数を使います.部分文字列を取得するには,角括弧([ ], ブラケット)を使います.文字列sについて,s[i] はインデックス i にあたる文字を取り出します.s[i:j] はインデックス i からインデックス j-1 までの部分文字列を取り出すことを意味します.インデックスは0から始まるので,例えば s[2] は3文字目を意味し,s[1:5] は2文字目から4文字目を意味します.また,s[i:j] においてiを省略して s[:j] としたときは,最初からを意味し,j を省略して s[i:] とした時は最後までを意味します.
 
このように : を使って部分文字列を取り出す手法はスライシングと呼ばれ,この後のリストの操作や配列の操作でも同様な操作が可能です.インデックスは負の値を指定することも可能です.負の値を指定した場合,一番最後の文字を -1 として後ろから順に数えることになります.
 
>>> a = "abcdefghi"
>>> len(a)
9
>>> a[3]
'd'
>>> a[2:5]
'cde'
>>> a[:4]
'abcd'
>>> a[3:]
'defghi'
>>> a[-1]
'i'
>>> a[:-3]
'abcdef'
 
文字列を数値に変換するには int関数(整数に変換する場合)とfloat関数(浮動小数点数に変換する場合)を使います.
>>> a = "4"
>>> b = 3
>>> a + b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Can't convert 'int' object to str implicitly
>>> int(a) + 4
8
>>> c = "3.5"
>>> int(c) + b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '3.5'
>>> float(c) + b
6.5
 
数値を文字列に変換する場合は str関数を使います.
>>> a = 6
>>> b = 7
>>> a + b
13
>>> str(a) + str(b)
'67'
 
文字列の中に変数の値を入れたい時は,文字列型のメソッド format を使います.
>>> a = 4
>>> b = 6
>>> c = a + b
>>> s = "{}と{}の和は{}です".format(a, b, c)
>>> s
'4と6の和は10です'
ここでは,{}が3つ含まれている文字列のformatメソッドに3つの引数を与えて呼び出して,その結果をsに代入しています.文字列中の{}が対応する変数の値に書き換えられます.
 
>>> t = "{:2d}を{:2d}で割ると{:5.3f}です".format(a, b, a/b)
>>> t
' 4を 6で割ると0.667です'
ここでは,{ と } の間にフォーマット指示が含まれています.{:2d}は整数を2も自分の長さを使って挿入するという意味で,{:5.3f}は浮動小数点数を全体で5文字分使い,小数点以下3桁で挿入するという意味です.