変数
プログラミング未経験者の人に「変数」を説明すると、文字通り”変わる値”を格納するための「箱」です。
変数名 = 値
で変数を作成することが出来ます。
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乗を結果として返します。
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ではシーケンスのデータに対して共通した処理を行うことが出来、
文字列型のデータにもその操作を行うことが出来ます。
以下のプログラムを記述して実行し、出力結果を確認してください。
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'
このようなエラーメッセージが表示されます。
数値型と文字列型を+で結合することは出来ません。
数値を文字列に、文字列を数値に変換したい場合、以下のように記述します。
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 <大>