Pythonの基本的なコマンドと動作について説明します。Jupyter Notebookを使う前提です。「In」はコマンド入力で、「Out」はその出力結果を表します。
「Jupyter Notebookの準備」のところで、"Hello World"と表示しました。これは、文字列を表示したということです。数値やその演算結果を出力するにも、同じprintを使います。ただし、今度は「"」でくくりません。そうしますと、数値(整数)として扱われます。
In
print(2)
Out
2
In
print(2+5)
Out
7
文字列として出力するには、「"」でくくります。
In
print("2+5")
Out
2+5
Tips:コマンドは、半角で入力します。
コードにコメントをつけておきたいことがあります。簡単なコードでしたらコメントは必要ないでしょうが、込み入ってきたとき、コメントがあるとその意図が解釈しやすいのです。コメントをつけるには、コメントの文字列の前に # をつけます。
In
# This is a comment.
Out
(何も実行されず表示もない)
基本的な計算を行います。四則演算に加え、べき乗や剰余も計算します。
In
# 足し算
3+4
Out
7
In
# 引き算と掛け算
3-4*5
Out
-17
In
# 割り算
3/4
Out
0.75
In
# 剰余
3%4
Out
3
In
# 累乗
3**4
Out
81
一連のコードを記述するとき、同じ値を何度も使うことがあります。これが、一連のコードの中に幾つもあると、いちいち入力し直すのはかなり面倒です。そこで、この値に名前を付けて、この名前に値を入れることで入力し直しをなくします。値を入れる名前を変数といいます。データを入れる入れ物ということです。
In
#「ねこ」という文字列を、変数aに代入し、表示する
a = "ねこ"
print(a)
Out
ねこ
変数名には、大文字と小文字の区別があること、先頭に数字が使えないこと、制御文で使われる語など(ifとかforとか)は使えないこと、に注意します。
In
# 変数xに1を、変数yに2を代入し、x+yを計算し表示する
x = 1
y = 2
print(x+y)
Out
3
変数に新しく値を代入したら、変数の値は新しい値で上書きさます。
In
x = 1
print(x)
x = x+5
print(x)
Out
1
6
一連のコードでは、変数への値を1ずつ増やすという操作を頻繁に行います。x = x + 1と記述すれば、変数xの値を1つずつ加算します。この記述は、x += 1と書くこともできます。
In
# xの初期値は3で、4を加算する
x = 3
x += 4
print(x)
Out
7
数値では、"+"は加算として働きます。文字列では、"+"は文字列同士の連結として働きます。
In
m = "情報コース"
print("私は" + m + "で学んでいます")
Out
私は情報コースで学んでいます
文字列と数値はそのままでは連結できません。
In
st1 = "今、"
num = 12
st2 = "時です"
print(st1 + num + st2)
Out
TypeError Traceback (most recent call last)
<ipython-input-4-0b0f12521f81> in <module>
2 num = 12
3 str2 = "時です"
----> 4 print(str1 + num + str2)
TypeError: can only concatenate str (not "int") to str
f文字列を使うと、エラーなく連結できます。
In
st1 = "今、"
num = 12
st2 = "時です"
text = f"{st1}{num}{st2}"
print(text)
Out
今、12時です
f文字列は、値を埋め込んで文字列を連結します。
In
n1 = "千葉県"
n2 = "千葉市"
print(f"私は{n1}の{n2}に住んでいます")
Out
私は千葉県の千葉市に住んでいます
これまで、数値や文字列といったデータを扱ってきました。このように、データには種類があって、これを「型」といいます。データを扱うとき、この型を意識します。型には、「整数型」、「文字列型」、「小数型」などがあります。これまで扱ってきた数値は「整数型」ですし、文字列は「文字列型」です。
先ほど、「文字列をつなげる」で「文字列と数値はそのままでは連結できません」と書きました。文字列と数値が混在していることがいけないのですが、でも、場合によっては変数になっていて、すぐにはその型がわからないかもしれません。そこで、型を調べる方法があります。type()で、()の中に調べたい変数を入れれば、その型が表示されます。
In
num = 12
type(num)
Out
int
In
st1 = "時です"
type(st1)
Out
str
異なる型どうしでは計算したり、連結したりできません。そこで、型変換します。整数型に変換するにはstr()を、浮動小数点型に変換するにはfloat()を、文字列型に変換するにはstr()を使います。
In
# 整数型を文字列型に変換します。
num = 12
num2 = str(num)
type(num2)
Out
str
In
st1 = "今、"
num = 12
st2 = "時です"
print(st1 + str(num) + st2)
Out
今、12時です
浮動小数点型と整数型とは別ですが、同じ数値なので、型変換しなくてもエラーになりません。出力は浮動小数点になっています。
In
x = 1.5
y = 10
z = x + y
print(z)
type(z)
Out
11.5
float
2つの値の関係を調べたいときがあります。また、その関係によってその後の挙動を変えたいときがあります。このようなとき、比較演算子と条件式を使います。
代表的な比較演算子として以下のようなものが用意されています。
==:等しい
!=:異なる
>:左辺が右辺より大きい
<:左辺が右辺より小さい
>=:左辺が右辺以上
<=:左辺が右辺以下
もし、比較演算した結果が「真」(正しい)なら、Trueが返ります。比較演算した結果が「偽」(正しくない)なら、Falseが返ります。このTrue及びFalseはbool型(真偽値型)といって、それぞれ1と0に対応します。
In
print(3 + 4 == 5)
Out
False
In
print(3 + 4 != -1)
Out
True
比較演算した結果によって、その後の挙動を変えます。このとき、比較演算子を用いた式(条件式)を作り、その結果がTrue(真)のときだけ、その後の処理を行います。このとき、その後の処理は、インデント(字下げ)します。コードが読みやすいようにするためですが、ここではスペース4つ分字下げすることにします。
In
k = 10
if k == 10:
print("この部屋に" + str(k) + "人居ます。")
# kが10のときだけ表示されます
Out
この部屋に10人居ます。
In
car = "Civic"
if car == "Civic":
print("乗用車は"+ car + "です。")
# carがcivicのときだけ表示されます
Out
乗用車はCivicです。
このように、if 条件式:と記述した文は if 文(条件文)といいます。上記の例では条件式の真偽によって、その後の処理を行うか行わないかを制御しました。場合によっては、偽になった場合にも処理を行いたいことがあります。そのときはelseを用います。そうしますと、if条件文で、真ならば...を行い、偽ならば...を行う、といった分岐ができます。
In
k = 10
if k > 15:
print("大きい")
else:
print("小さい")
Out
小さい
さらに、if文で条件式が偽となった場合、別の条件式を作りたいときがあります。こういうときは、「elif」を使います。このelifは幾つか設定できますから、幾つかの条件を設定し、該当する場合に処理を実行するというような使い方ができます。
In
car = "stationwagon"
if car == "sedan":
print("車はセダンです。")
elif car == "hatchback":
print("車はハッチバックです。")
elif car == "stationwagon":
print("車はステーションワゴンです。")
else:
print("その他の車種です。")
Out
車はステーションワゴンです。
複数の条件式を評価する場合、論理演算子を使います。こうした論理演算子には、and(かつ)、or(または)があります。not(否定)は、条件式が真のとき偽を、偽のとき真を返します。
In
k = 10
print(k > 5 and k < 15)
Out
True
In
k = 10
print(k < 5 or k < 15)
Out
True
In
k = 10
print(not k * 5 > k ** 2)
Out
True