Pythonチュートリアル Level0
ここではGoogle Colaboratory上でちょっとした計算ができる程度の知識とスキルを手っ取り早く身につけるために必要な事項を紹介します。
サンプルプログラムを理解するのに必要な「コメント」とprint
関数の簡単な使い方を覚えましょう。また、変数とか値とかいう言葉はひとまずc言語と同様に考えてください。
=
は変数に値を代入するときに使いますprint
関数は括弧の中に書いた文字列や数値、変数、計算結果などを画面に出力します。# この行はコメントです value = 1 # value という名前の変数に整数値1を代入しています # この位置にコメントを書くこともできます text = "# これはコメントではありません" # ここからコメントです print(text) print("Value = ", value) # コンマで区切ると二つ以上のものも1行に出力できます。
# これはコメントではありません Value = 1
既に上記の例でも使用していますが、
文字列は単引用符 ('
) で囲むか、もしくは二重引用符 ("
) で囲みます。どちらでもかまいません。
print('Hello, World.') # 引用符
Hello, World.
+
で文字列を連結する (くっつけて一つにする) ことができます
a = "Hello, " b = 'World.' # 単引用符 ' でも二重引用符 " でもどちらでもかまいません。 print(a + b)
Hello, World.
整数や実数の計算について、+, -, *, / ,(,)
はc言語と同じように動作します。 print
関数の中に直接式を書いてもいいし、変数を使って計算することもできます。変数は宣言する必要はなく、代入するたびに新しく生成されます。代入をせずにその変数を使おうとするとにエラーになります。
minute = 60 # 1 minute = 60 seconds hour = 60*minute day = 24*hour year = 365*day print("1 yesr =", year, "seconds")
1 yesr = 31536000 seconds
/
) は常に実数を返します。 //
演算子は 小数部を切り捨てた整数を返します。%
で求めます。**
をつかいます。実数冪も使用できて 3**0.5
$=\sqrt{3}$となります。print(2 + 2) print(50 - 5*6) print( (50 - 5*6) / 4 ) print(17 / 3) # 除算は浮動小数点数を返す print(17 // 3) # 整数除算は小数部を切り捨てた整数を返す print(17 % 3) # % 演算子は剰余を返す print(2 ** 7) # 2の7乗 print(3 ** 0.5) # ルート3 print(4 * 3.75 - 1) # 整数と実数が混ざっていると自動的に実数に変換して計算
4 20 5.0 5.666666666666667 5 2 128 1.7320508075688772 14.0
コンマ区切りの値 (要素) の並びを角括弧[
, ]
で囲んだものはリスト (list)と呼ばれます。
リストの個々の要素に対する操作、はc言語の配列のように リストの名前[要素の番号]
で行います。要素の番号は0から始まります
squares = [1, 4, 8, 16, 25] print(squares) print(squares[2]) squares[2] = 9 print(squares)
[1, 4, 8, 16, 25] 8 [1, 4, 9, 16, 25]
リストは+
で連結できます。
squares = [1, 4, 9] squares = squares + [16, 25] print(squares)
[1, 4, 9, 16, 25]
リスト名.append(付け加える要素)
とすることで要素を付け加えることができます。
squares = [1, 4, 9, 16, 25] squares.append(36) print(squares)
[1, 4, 9, 16, 25, 36]
組込み関数 len() をつかうとリストの要素数が得られます。
squares = [1, 4, 9, 16, 25, 36] print(len(squares))
6
リストを入れ子にできます。これはc言語の2次元配列のように使えます。
a1 = [1.1, 1.2, 1.3] a2 = [3.1, 3.2, 3.3] x = [a1, a2] print("x = ", x) print("x[0] = ", x[0]) print("x[0][1] = ", x[0][1])
x = [[1.1, 1.2, 1.3], [3.1, 3.2, 3.3]] x[0] = [1.1, 1.2, 1.3] x[0][1] = 1.2
if 条件: 条件成立時の処理 else: 条件不成立時の処理
でc言語のifと同様のことができます。コロン(:
)を忘れないようにしてください。いくつかの命令をまとめるときはc言語では括弧{}
を使いますが、pythonでは字下げが同じ行はひとつのまとまり(ブロック)と扱われます。
else
のブロックは省略することもできます。
pythonでは字下げに常に注意してください。 c言語で一番多い間違いはセミコロンのつけ忘れですが、 pythonで一番多い間違いは字下げの間違いです。
条件にはc言語と同様に、 <
(より小さい)、 >
(より大きい)、 ==
(等しい)、 <=
(より小さいか等しい)、 >=
(より大きいか等しい)、および !=
(等しくない)、が使えます。
# flagの値を変更して実行してみてください flag = 0 if flag > 0: print("この行はifの中です") print("この行もifの中です") else: print("この行はelseの中です") print("この行もelseの中です") print("この行はif-elseの外です")
この行はelseの中です この行もelseの中です この行はif-elseの外です
条件の中で、==
(等しい)は実数に対しては使ってはいけません。
if 0.1*0.1 == 0.01: print("0.1*0.1 == 0.01") else: print("0.1*0.1 != 0.01")
0.1*0.1 != 0.01
Python の for
文は、c言語の for 文とは全く違いますが、同じような場面でつかわれます。Python の for
文は、リストの各要素に対して反復処理を行います。反復の順番はリスト中に要素が現れる順番です。
使い方は、
for 変数 in リスト: 反復処理 反復処理が複数あるときは字下げを同じにする
のように書くと「リスト」の要素が順番に「変数」に代入されて、リストの要素の数すなわちlen(リスト)
の回数だけ反復処理が行われます。
xdata = [0, 1, 2, 3, 4, 5] for x in xdata: print(x*x) print("この行はforの中です") print("この行はforの外です")
0 この行はforの中です 1 この行はforの中です 4 この行はforの中です 9 この行はforの中です 16 この行はforの中です 25 この行はforの中です この行はforの外です
数列に対して反復を行う必要がある場合、組み込み関数 range()
が便利です。この関数を range(n)
のように呼び出すと[0, 1, 2, ..., n - 1]
のような0
からn - 1
までのn
個の要素をもった「リストのように使える数列」を作り出します。
for x in range(6): print(x*x)
0 1 4 9 16 25
break
文は、C 言語と同じく、最も内側の for
ループを中断します。
for x in range(10): print(x) if x == 5: break
0 1 2 3 4 5
関数はdef
を使って
def 関数名(仮引数): 仮引数を使った戻り値の計算 字下げを揃える return 戻り値
のように定義します。 やはりここでもコロンと字下げを忘れずに。
def square(x): y = x**2 return y def cube(x): y = x**3 return y print(square(3)) print(cube(2))
9 8
既に
print
: 画面に文字を出力するlen
: リストの要素数を返すrange
: リストのような数の並びを生成するなどを使ってきました。 これ以外にもpythonには多くの組み込み関数が用意されています。ここでは特によく使うものだけ紹介します。
abs
: 整数や実数の絶対値を計算するmax
: リストの要素もしくは引数の最大値を返すmin
: リストの要素もしくは引数の最小値を返すsum
: リストの要素もしくは引数の合計を返すprint(abs(-1)) x = range(11) print(len(x)) print(max(x)) print(min(x)) print(sum(x))
1 11 10 0 55
三角関数や指数関数などの初等関数を使用するときは標準数学モジュールを読み込みます。
関数を使用する前に
from math import *
を実行することで
sin
, cos
, tan
atan
(逆正接)等exp
log
(自然対数)sqrt
などを使えるようになります。
また、pi
という名前の変数に円周率の値が代入されています。
from math import * x = pi/3 print(sin(x)**2 + cos(x)**2) print(4*atan(1)) print(exp(1)) x = exp(1.234) print(log(x)) print(sqrt(2))
1.0 3.141592653589793 2.718281828459045 1.234 1.4142135623730951
list_name.append(element_to_add)
のようにしてlist_name
というリストにelement_to_add
という要素を付け加えることができました。このように変数にピリオドをつけて関数名を書くような使い方をするものをクラスメソッドと呼びます。リストデータ型には、他にもいくつかメソッドがありますが、ここではひとつだけ紹介しておきます。
squares = [1, 4, 9, 16, 25] squares.reverse() print(squares)
[25, 16, 9, 4, 1]
.reverse()
をリストにつけるとリストの要素の並びを逆にします。元のリストの中身自体が変わってしまうので注意が必要です。
range
関数の完全な仕様は
ranng( 初期値 , 上限 , 増分 )
です。初期値
と増分
を省略すると初期値 = 0
, 増分 = 1
が、増分
を省略したときは増分 = 1
が設定されます。生成される数列は上限
に一致することも超えることもはありません。得られた数列をリストとして表示するときはlist
関数を使います。
print(list(range(10))) print(list(range(1, 10))) print(list(range(1, 10, 2)))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [1, 2, 3, 4, 5, 6, 7, 8, 9] [1, 3, 5, 7, 9]
for
文を使って整数の自乗を順にならべた
squares = [0, 1, 4, 9, 16]
のようなリストをつくることを考えます。これまでの知識を使って書くと以下のようになります。
squares = [] for x in range(5): squares.append(x**2) print(squares)
[0, 1, 4, 9, 16]
これと同じことを以下のようにして実現できます。
squares = [x**2 for x in range(5)] print(squares)
[0, 1, 4, 9, 16]
このような機能を「リストの内包表記」といいますが、プログラムが簡潔になるのと以下のような副作用がないので非常によく使います。
x = 100 squares = [] for x in range(5): squares.append(x**2) print(squares) print(x) # 変数xにはfor文の最後の値が代入されたまま残っている。 x = 100 squares = [x**2 for x in range(5)] print(squares) print(x) # リストの内包表記の中の変数は同じ名前の別の場所の変数に影響しない
[0, 1, 4, 9, 16] 4 [0, 1, 4, 9, 16] 100
文字列の頭に f か F を付けたものをフォーマット済み文字リテラル (短く f-string とも)呼びます。f-stringの中では、変数や数式を{...}
の中に書くことで、そこに変数に代入されている値や計算結果を埋め込むことができます。
value = 3 print("Value =", value) print(f"Value = {value}") print(f"Value = {value ** 2}")
Value = 3 Value = 3 Value = 9