変数はプログラムの中でデータ(数値や文字列など)を一時的に保存しておく箱のようなものです。変数を使うことによってプログラムを読みやすくすることができたり、いろいろなメリットがあります。
変数に値を代入するには、=を用います。次の例は、1行目で変数aに500を代入し、2行目でaの内容を画面出力しています。画面出力をするときは、print(...)のカッコの中に出力する内容を指定します。
a = 500 # aに500を代入
print(a) # aを出力
500
Google Colaboratoryでは簡単な計算はprint(...)なしに出力しますが、通常の環境ではprint関数を用いて出力します。
数値の入った変数に計算することもできます。
a = 123 # aに123を代入
b = a * 4 # aに4をかけてbに代入
print(b) # bを出力
492
print関数のカッコ内で、文字列と変数をカンマ,でつなぐことで文字列と変数の値を出力することができます。
次の例では変数aとbという2つの変数を区別するように出力します。「aの値:」や「bの値:」のような文字列はダブルクォート"で囲みます。
a = 5
b = 8
print("aの値:", a)
print("bの値:", b)
aの値: 5
bの値: 8
一度代入された変数に別の値を代入すると、それ以降は新しく代入された値が入った状態になります。
a = 3 # aに3を代入する
a = 5 # aに5を代入する(このあと、aの値は5に更新される)
print("a =", a)
a = 5
次のように、a = a + 5と書くと、その行の時点で入っている値を用いて、変数の値を更新します。
a = 3 # aに3を代入する
a = a + 5 # aの値(3)に5を加えて代入する
print("a =", a)
a = 8
プログラムに書かれた内容は、上の行から順に実行されます。
a = 3 # aに3を代入する
a = a + 4 # aの値(3)に4を加えて、aに代入する
a = a * 5 # aの値(7)に5をかけて、aに代入する
print("a =", a)
a = 35
変数aの値と変数bの値を入れ換えるときは、変数aの値を別の変数tに代入しておき、変数aに変数bの値を代入し、変数bに変数tの値を代入します。このとき、一時的に値を代入しておく変数には、「一時的」という意味のtemporaryを略してt,tmp,tempといった変数名で使われることが多いです。
a = 3
b = 5
t = a # aの値(3)が変数tに代入される
a = b # bの値(5)がaに代入される
b = t # 変数tに代入されていたaの元の値(3)がbに代入される
print("a =", a)
print("b =", b)
a = 5
b = 3
変数tを用いないと、次のようになり、交換できないので注意してください。
a = 3
b = 5
a = b # 最初にbの値(5)がaに代入される。この時点でaもbも5になる
b = a # ここでaの値(すでに5になっている)がbに代入される。これによってbも5になる
print("a =", a)
print("b =", b)
a = 5
b = 5
変数名は、aやbといったアルファベット1文字だけではなく、複数の文字(文字列)で書けます。
次の例は、身長と体重からBMIの値を求めるプログラムです。身長を変数height,体重を変数weightで指定し、heightとweightの値から計算したBMIの値を変数bmiに代入しています。
※BMI(Body Mass Index)はボディマス指数と呼ばれ、体重[g]を身長[m]の2乗で割って求めます。成人ではBMIが国際的な指標として用いられ、日本では適正値は18.5〜25とされています。
height = 169.0 # height:身長[cm]
weight = 56.0 # weight:体重[kg]
# BMI = 体重[kg] ÷ 身長[m]の2乗
bmi = weight / (height/100.0)**2
print(bmi) # BMIを出力
19.607156612163443
変数に使える文字は次の種類です。
・アルファベット(小文字推奨)
・数字(2文字目以降)
・アンダースコア(_)
例)apple, banana, dog01, dog02, ...
2語以上の英単語を使用して変数名をつけるときは、アンダースコア(_)で区切ります(snake_caseといいます)。
例)user_name, total_price, math_score, total_score, ...
次の語は構文を構成するため、変数に使用することはできません。このようなものを予約語といいます。
False, None, True, and, as, assert, async, await, break, class, continue, def, del,
elif, else, except, finally, for, global, if, import, in, is, lambda, nonlocal, not, or, pass, raise,
return, try, while, with, yield
また、アルファベットの大文字は変数以外の用途で使うことが多いので使わない方がいいでしょう(のちほど出てきます)。
型 | 説明 | 記述例 | 備考 |
---|---|---|---|
str型 |
文字列 (文字や文字列) |
str = "abc" str = "2" |
文字列はダブルクォート("...")で囲む。 "2"は文字としての「2」を表す。 |
int型 |
整数 (小数点を含まない数値) |
num = 6 num = 123456 num = -765432 |
|
float型 |
浮動小数点数 (小数点を含む実数値) |
num = 3.14 num = 3.0 |
整数値をfloat型として代入するときは、「3.0」のように代入。 |
bool型 |
真偽値 (True,Falseの2種類の値) |
flg = True flg = False |
Pythonでは計算の結果によって変数の型が変化する場合があります。すぐに必要な知識ではないので最初は読み流してください。
a = 1 # 変数aがはじめて使われ、int型の1が代入される
print(a)
a = a / 5 # 計算結果(0.2)が小数になるので、aはfloat型になる
print(a)
a = a * 5 # 計算結果(1.0)は整数で表せるが、aの型はfloatのまま
print(a)
1 # int型
0.2 # float型
1.0 # float型
文字列どうしを結合するときは、文字列どうしを+でつなげます。
junior_highschool = "海城" + "中学" # 文字列どうしを足すと結合される
print(junior_highschool)
海城中学
junior_highschool = "海城" + "中学"
school_name = junior_highschool + "高等学校"
print(school_name)
海城中学高等学校
数値は、str(...)のカッコの中に入れて文字列に変換してから、他の文字列と結合します。
grade = 4
school_name = "海城中学高等学校"
school_name_grade = school_name + str(grade) +"年" # 数値は文字列に変換してから結合
print(school_name_grade)
海城中学高等学校4年
str(...)に入れて文字列に変換しなかった場合、TypeErrorとなります。
改行するときは改行文字\nを入れます。
\(バックスラッシュ)は ⌥option+¥(を押しながら
)で入力します。
lyrics = "朝に仰ぐ芙蓉峰\n玲瓏千古かげ高し\n夕に見やる太平洋\n渺茫万里はてもなし"
print(lyrics)
朝に仰ぐ芙蓉峰
玲瓏千古かげ高し
夕に見やる太平洋
渺茫万里はてもなし
次の例では、最初に"*"を変数sに代入します。2〜4行目でs = s + sを3回繰り返し、5行目でsを出力します。どのような文字が出力されるか考えてみましょう。
s = "*"
s = s + s
s = s + s
s = s + s
print(s)
print(...)はPythonの関数というものです。他にも様々な関数がありますが、print関数はカッコ内に指定した内容を画面に表示します。Google Colaboratoryでは簡単な計算はprint関数なしに出力しますが、通常の環境ではprint関数を用いて出力します。他の関数については必要になったときに扱います。
変数a〜dに"apple", "banana", "cherry", "drian"をそれぞれ代入し、変数a〜dを1行ずつ出力します。
a = "apple"
b = "banana"
c = "cherry"
d = "drian"
print(a)
print(b)
print(c)
print(d)
apple
banana
cherry
drian
print関数のカッコ内に変数a〜dをカンマ,で区切ると、変数a〜dの値を同じ行に出力します。このとき、各変数のあいだは半角スペース1つ分で区切られます。
print(a, b, c, d)
apple banana cherry drian
print関数にendオプション(end="...")を入れると、任意の文字を末尾に付加して出力します。デフォルト値(endオプションをつけない場合)は、\n(改行文字)です。
\(バックスラッシュ)は ⌥option+¥(を押しながら
)で入力します。
end="."を指定すると、各変数を並べた後にドット.をつけて出力します。
print(a, b, c, d, end=".")
apple banana cherry drian.
print関数はデフォルトで改行が入りますが、end=""と指定することで、改行を入れずに出力します。
print(a, end="")
print(b, end="")
print(c, end="")
print(d, end="")
applebananacherrydrian
end=" "と指定すると、改行されずに、文字列の後に半角スペース1つを入れて出力されます。
print(a, end=" ")
print(b, end=" ")
print(c, end=" ")
print(d, end=" ")
apple banana cherry drian
end=", "と指定すると、改行されずに、半角カンマのあとに半角スペース1つを入れて出力されます。
print(a, end=", ")
print(b, end=", ")
print(c, end=", ")
print(d, end=", ")
apple, banana, cherry, drian,
print()のみ(カッコ内に何も入れない)記述した場合には、endオプションのデフォルト値である改行文字のみが出力されます。
print(a, end="")
print()
print(b, end="")
apple
banana
print関数にsepオプション(sep="...")を入れると、任意の区切り文字で変数を区切って出力します。デフォルト値(sepオプションをつけない場合)は、半角スペース1つ分です。
sep=", "と指定すると、各変数のあいだを半角カンマ,と半角スペース1つで区切ります。
print(a, b, c, d, sep=", ")
apple, banana, cherry, drian
sep=""を指定すると、区切らずに出力します。
print(a, b, c, d, sep="")
applebananacherrydrian
sep="\t"と指定すると、タブ文字\tで区切られます。タブ文字とは、普通のスペースとは異なり、次の区切りの位置まで空白を埋めます。つまり、次のように指定することで、2つめの変数を開始する位置を揃えることができます。Colaboratoryでは半角8文字で区切られるので、8文字以上の文字列と8文字未満の文字列が混在するときには注意が必要です。
\(バックスラッシュ)は ⌥option+¥(を押しながら
)で入力します。
print(a, b, sep="\t")
print(c, d, sep="\t")
apple banana
cherry drian
sep="\n"を指定すると、改行文字\nで区切られるので、各変数をそれぞれ1行ずつ表示します。
print(a, b, c, d, sep="\n")
apple
banana
cherry
drian