【Python3】データ型(数値・文字列・論理)と出力方法
整数(int)
整数は下記の様に記述します。
num = 1234 # 整数
○進数
進数は下記の様に記述します。
num = 0o777 # 8進数 (0oで始まる数値は 8進数とみなされる)
num = 0xffff # 16進数 (0xで始まる数値は16進数とみなされる)
num = 0b11000100 # 2進数 (0bで始まる数値は 2進数とみなされる)
長整数(long)
Python 3 では、整数(int) と長整数(long)は統合され、
すべて整数(int)として扱われるようになり、L や l も廃止されました。
num = 123L # Python 3 ではエラー(SyntaxError例外)
余談として、Python 2 までは、長整数(long)を使用できます。
長整数(long)は、整数(int)を超える桁数の整数を扱います。
末尾に l か L をつけます。
整数(int)の最大値(sys.maxint)はシステムにより異なります。
num = 9223372036854775808L
浮動小数点数
浮動少数点数は下記の様に記述します。
num = 1.234 # 浮動小数点数
num = 1.2e3 # 浮動小数点数(指数表記) 1.2 × 103
num = 1.2E-3 # 浮動小数点数(指数表記) 1.2 × 10-3
虚数(complex)
虚数(complex)には j または J をつけます。
num = 3.14j
論理型
論理値(bool)は、True または False で表します。最初の1文字は大文字で記述します。
Python では、False、数値の 0 や 0.0、空文字(“")、空リスト([])、空タプル(())、空辞書({})などを偽とみなし、それ以外を真とみなします。
bool = True
bool = False
文字列
文字列はダブルクォーテーション( " )またはシングルクォーテーション( ' )で囲みます。
str = "Hello world"
str = 'Hello world'
“…" の中では ' を、’…’ の中では " を使うことができます。
“…" の中で " を、’…’ の中で ' を使用するには、
バックスラッシュ(\)を用いて引用符をエスケープ(無効化)します。
str = "We can use \" in the string."
str = 'We can use \' in the string.'
バックスラッシュ(\)を用いることで、複数行に分けることができます。
str = 'Hello \
world!'
“…" や '…’ の前に r または R をつけると、
後述するエスケープシーケンスが無視されます。
str = 'aaa\nbbb' # \n は改行とみなされる
str = r'aaa\nbbb' # \n はバックスラッシュ(\)と小文字nとみなされる
三重クォート “""…""" や "’…"’ は、
複数行にまたがった文字列を記述することができます。
三重クォートはしばしば、複数行のコメントとして利用されることがあります。
str = """A simple example module
This module is ...
"""
複数の文字列をスペースで区切ることで、連結することができます。
print 'Hello ' 'world!'
Unicode文字列(unicode)
Unicode文字列は、ASCII 以外の Unicode を含む文字列です。
文字数を数える際など、Unicode が認識されるようになります。
# Python 2
len = len(u'あいうえお') # 5文字
len = len('あいうえお') # バイト列として扱われるため、15文字になる
# Python 3
len = len(u'あいうえお') # 5文字
len = len('あいうえお') # uをつけなくても5文字として扱われる
エスケープシーケンスを無効化するには、ur や UR を指定します。
print ur'あああ\n'
Python 3.0 では u が廃止され、"…" や '…’ が Unicode文字列を示すようになりました。Python 3.3 では u"…" が復活しました。
“…" '…’ | u"…" u’…’ | b"…" b’…’ | |
---|---|---|---|
Python 2.x | バイト列 | Unicode文字列 | バイト列 |
Python 3.0-3.2 | Unicode文字列 | SyntaxError | バイト列 |
Python 3.3- | Unicode文字列 | Unicode文字列 | バイト列 |
バイト列(bytes)
Python 3 では、あえてバイト列として扱いたい文字列の “…" や '…’ の前に b または B を記述して、バイト列(bytes)であることを示します。
Python 2 では b や B は無視されます。
bytes = b'0123456789abcdef'
エスケープシーケンス(\)
ダブルクォーテーション(“)で囲んだ文字列中では、
バックスラッシュ(\)を用いて、下記のエスケープシーケンスを使うことができます。
\改行 バックスラッシュと改行が無視される
\\ バックスラッシュ(\)
\' シングルクォート(')
\" ダブルクォート(")
\a ベル(BEL)
\b バックスペース(BS)
\f フォームフィード(FF)
\n 改行(LF)
\r 復帰(CR)
\t タブ(TAB)
\v 垂直タブ(VT)
\nnn 8進表記文字(nは0~7)
\xnn 16進表記文字(nは0~f)
\uxxxx ユニコード文字xxxx (例: u"\u3042")
\U....xxxx ユニコード文字xxxxxxxx (例: U"\U00003042")
\N{name} Unicodeデータベース文字 (例: u"\N{HIRAGANA LETTER A}")
文字列のフォーマット(%)
%s は文字列、%d は整数、%f は浮動小数点数、%x は 16 進数、%o は 8 進数、%% は %自身を示します。
print "%s" % "ABC" #=> ABC
print "%d" % 123 #=> 123
print "%f" % 1.23 #=> 1.23
print "%x" % 255 #=> ff
print "%o" % 255 #=> 377
print "%%%d" % 80 #=> %80
% に続く数値で文字幅や桁数を指定することができます。
print "|%5s|" % 'ABC' #=> | ABC| : 右寄せ5文字分
print "|%-5s|" % 'ABC' #=> |ABC | : 左寄せ5文字分
print "|%5d|" % 123 #=> | 123| : 右寄せ5桁
print "|%-5d|" % 123 #=> |123 | : 左寄せ5桁
print "|%+5d|" % 123 #=> | +123| : ±符号付き
print "|%5.2f|" % 1.23 #=> | 1.23| : 全体桁数.少数点以下の桁数
print "|%05d|" % 123 #=> |00123| : 0埋め
ヒアドキュメント
Python では通常、ヒアドキュメントを次のように書きます。
message = """Humpty Dumpty sat on a wall,
Humpty Dumpty had a great fall.
All the king's horses and all the king's men
Couldn't put Humpty together again."""
message = """
Humpty Dumpty sat on a wall,
Humpty Dumpty had a great fall.
All the king's horses and all the king's men
Couldn't put Humpty together again.
"""[1:-1]
・バックスラッシュを挿入
message = """\
Humpty Dumpty sat on a wall,
Humpty Dumpty had a great fall.
All the king's horses and all the king's men
Couldn't put Humpty together again.\
"""
・strip()を使う
message = """
Humpty Dumpty sat on a wall,
Humpty Dumpty had a great fall.
All the king's horses and all the king's men
Couldn't put Humpty together again.
""".strip()