Python

Python基礎講座(4 数値型・文字列型)

変数

プログラミング未経験者の人に「変数」を説明すると、文字通り”変わる値”を格納するための「箱」です。

変数名 = 値

で変数を作成することが出来ます。

var1 = 1
var1 = var1 + 1

変数には定数(数値、文字列)だけでなく、変数の値を格納することを可能です。
この場合最終的にvar1の値は2になります。
変数という名前ですが、変わらない値(定数)も格納することが出来ます。
(一度値を格納した後、変更しなければそれは定数といえます)

TAX = 0.08

Pythonでは、定数を作成した場合は変数の名前を大文字にする共通ルールがあります。
大文字にしなくてもプログラムは動作しますが、他の人があなたのプログラムを見た時に、
「この変数は定数なのだな」とすぐに分かるよう共通ルールに従いましょう。
また、Pythonは変数名の大文字と小文字を区別します。"tax"と"TAX"は別の変数となることに注意してください。

変数には数値や文字列、それらのリストなど、様々な形のデータを格納することが出来ます。
Pythonは他のプログラミング言語であるC言語やJavaと異なり、変数を宣言する際に、
データの型を明記する必要がありません。

◆C言語の場合
int a
a = 1

◆Javaの場合
double b
b = 3.14
String c
c = "text"

◆Pythonの場合
a = 1
b = 3.14
c = "text"

Pythonは変数の型が数値なのか、文字列なのかを自動で判定します(動的型付け)。

次に、Pythonの基本的なデータ型である数値型と文字列型を紹介します。

数値型

a = 1
b = 3.14
c = 2 + 3j

整数、小数、複素数が使用可能です。
数値型のデータの算術演算は電卓の +, -, *, /, %(剰余)が使用可能です。
"//"を使用することで、小数以下を切り捨てた除算が可能です。
"**"を使用することで、数字のN乗を結果として返します。

display_number.py
print(1 + 2.5)
print(5 / 2)
print(5 // 2)
print(5 % 2)
print(3**2)

実行すると以下のような結果が出力されます。

3.5
2.5
2
1
9

文字列型

文字列型は" "または' 'で括った文字を格納します。

text = "this is string"
text2 = '1'

text2は数値の1ではなく文字の'1'であることに注意してください。

"""または'''で括ると、改行を含む文字列を変数に格納できます。

text3 = """1行目
2行目"""

シーケンス

シーケンスとは「順番に並んでいるもの。順番に処理をすること」という意味があります。
リスト(次の章で説明します)は典型的なシーケンスですが、Pythonでは文字列型も「文字」のシーケンスとして扱われます。
Pythonではシーケンスのデータに対して共通した処理を行うことが出来、
文字列型のデータにもその操作を行うことが出来ます。
以下のプログラムを記述して実行し、出力結果を確認してください。

string_func.py
text1 = "abc"
a_in_text = "a" in text1
b_in_text = "d" in text1
print("in_text_a {0}".format(a_in_text))
print("in_text_d {0}".format(b_in_text))
text2 = "abc" + "def"
print("abc + def {0}".format(text2))
print("abc * 3 {0}".format("abc" * 3))
print("text2[3] {0}".format(text2[3]))
print("text2[-1] {0}".format(text2[-1]))
print("text2[1:4] {0}".format(text2[1:4]))
print("text2[0:6:2] {0}".format(text2[0:6:2]))
print("len(text2) {0}".format(len(text2)))
print("min(text2) {0}".format(min(text2)))
print("max(text2) {0}".format(max(text2)))

a in xxx

文字aが文字列型変数xxxに含まれるか判定します。
含まれる場合はTrue(真)、含まれない場合はFalse(偽)を返します。

str1 + str2

文字列を結合します。
注意して欲しいのは、数値も" "または' 'で括れば文字列になるということです。

10 + 20

は30を返し、

"10" + '20'

は"1020"を返します。それでは、

10 + "20"

は何を返すのでしょうか?実験してみましょう。

TypeError: unsupported operand type(s) for +: 'int' and 'str'

このようなエラーメッセージが表示されます。
数値型と文字列型を+で結合することは出来ません。
数値を文字列に、文字列を数値に変換したい場合、以下のように記述します。

convert_explain.py
str1 = str(10) + '20'
int1 = 10 + int("20")
print("{0}".format(str1))
print("{0}".format(int1))

str(数値)で数値型の値を文字列型の値に変換できます。
同様に、int(文字列)で数値型に変換できる文字列型の値を数値型の値に変換できます。
"abc"など数値に変換できない文字列をint()で変換しようとした場合はエラーが発生します。

str * x

数値型に対しては乗算を行う「*」ですが、文字列型に対しては「その文字列をx回繰り返す」
という処理を実行します。

str[x]

文字列strのx番目の文字を返します。
このxは0番目から始まる点に注意してください。
xがマイナスの場合は最後尾からx番目の文字を返します。

str[x:y]

文字列strのx番目からy-1番目の文字列を返します。

str[x:y:z]

文字列strのx番目からy-1番目の文字列を、z文字間隔で返します。

len(str)

文字列strの文字列長を返します。

min(str) / max(str)

min(str)は、文字列strを構成する文字の中から最小の文字を返します。
文字列が"54321"の場合は"1"を、"abcde"の場合は"a"を返します。

max(str)は、文字列strを構成する文字の中から最大の文字を返します。
文字列が"54321"の場合は"5"を、"abcde"の場合は"e"を返します。

数値や文字列が混合している場合は、以下の順序の中で最大/最小を判定します。
<小> 0 1 2 ・・・ 8 9 A B ・・・Y Z a b ・・・y z <大>

次: Python基礎講座(5 リスト・タプル)