numpy
, scipy
pandas
keras
, pytorch
, chainer
matplotlib
, bokeh
, plotly
Jupyter notebook を起動してください
Hello, world!
print("Hello, world!")
Hello, world!
困ったら print
print(1)
1
print(1 + 1)
2
x = 1
print(x)
1
x = 1
x # jupyter notebook では最後の変数の中身が勝手に表示される
1
四則演算
1 + 1 # 整数同士の足し算
2
1.0 + 1.0 # 実数同士の足し算
2.0
3 - 2 # 整数同士の引き算
1
3 * 2 # 整数同士の掛け算
6
5 / 3 # 割り算(Python3の場合、スラッシュで普通の割り算)
1.6666666666666667
5.0 / 3.0 # 実数同士の割り算
1.6666666666666667
5 // 3 # 整数同士の割り算で商を知りたい場合
1
10 % 3 # 整数同士の割り算で余りを知りたい場合
1
100 + 10 / 5 # 割り算は足し算より優先される
102.0
(100 + 10) / 5 # カッコを使うと優先される演算を決められる
22.0
2 ** 10 # 累乗は **
1024
'Hello, world!' # ダブルコーテーション、シングルコーテーションで括ると文字列になる
'Hello, world!'
'112313' # 整数(int)ではなく文字列(str)になる
'112313'
'112313' + 5 # str と int の足し算はできない
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-20-292b60963b18> in <module>() ----> 1 '112313' + 5 # str と int の足し算はできない TypeError: must be str, not int
'112313' + '112313' # str 同士の足し算は、文字列の連結になる
'112313112313'
1980 * 1.08
2138.4
2**(2**2)
16
(1 + 0.000000001) ** (1 / 0.000000001)
2.71828205201156
(1 + 0.0000000000001) ** (1 / 0.0000000000001)
2.716110034086901
(1 + 0.000000000000001) ** (1 / 0.000000000000001)
3.0350352065492614
(1 + 0.0000000000000001) ** (1 / 0.0000000000000001)
1.0
大きい数 + 非常に小さい数
では、非常に小さい数が無視される(丸め誤差)数値、文字列、リストなどを記憶しておける
x = 1 # x に 1 を代入する
print(x)
1
x = 1
x = 2
print(x)
2
x = 1
y = 4
print(x * y)
4
x = 0
x = x + 1
print(x)
1
複数のオブジェクトをひとまとめにする
[1, 2, 6, 4, 8] # 大カッコでリストを宣言する
[1, 2, 6, 4, 8]
x = ['yay!', 1, 3.0, [4, 0.1, 'yay!']] # リストの中身は、数値・文字列・リストなど
#x[3] # 0番目の要素を取り出す
x
['yay!', 1, 3.0, [4, 0.1, 'yay!']]
#x[0 : 3] # 0番目から2番目までの要素を取り出す
x[0] = 0
x
[0, 1, 3.0, [4, 0.1, 'yay!']]
中身が変更できないリストみたいなもの
x = (1,2,3) # ふつうの括弧でくくるとタプル
x[0] # リストみたいに中の要素にアクセスできる
1
x[0] = 100 # 一度作ったら変更できない
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-38-802cdab161c2> in <module>() ----> 1 x[0] = 100 # 一度作ったら変更できない TypeError: 'tuple' object does not support item assignment
数字以外のもので値を取り出せる
x = {'W': 1, 'b': -0.1} # 中括弧で囲む& key: value と書くと辞書ができる
type(x)
dict
x['W'] # キーを使ってそれに対応する値を取り出す。キーは文字列でもよい。
1
x[(1, 2)] = 3 # このように新しい要素を追加できる。タプルをキーにすることもできる
x
{(1, 2): 3, 'W': 1, 'b': -0.1}
x[[1,2]] = 3 # リストはキーにできない
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-43-8777a0ab5a51> in <module>() ----> 1 x[[1,2]] = 3 # リストはキーにできない TypeError: unhashable type: 'list'
ある条件が満たされたときだけ実行される
x = 1
print(x == 1) # x が 1 と等しいとき True
print(x != 1) # x が 1 ではないとき True
print(x != 0) # x が 0 ではないとき True
True False True
x = [1,1]
if x[0] == 0: # if (条件): が if 文
print('yay!') # Python では必ず <tab> を打ってインデントを下げる!
if x[1] == 1: # if 文の中に if 文を入れられる
print('yayyay')
print('hello') # インデントが下がっていないので、ここからは if 文の外
hello
x = 1
if x == 0: # if (条件): が if 文
print('yay!') # かならず <tab> を打ってインデントを下げる!
File "<ipython-input-46-e07010cf2b42>", line 3 print('yay!') # かならず <tab> を打ってインデントを下げる! ^ IndentationError: expected an indented block
x = 1
if x == 0:
print('x=0')
else: # if 文の条件がFalseの場合に実行される
print('x!=0')
x!=0
x = [1,2]
if x[0] == 1:
if x[1] == 0:
print('x=0')
elif x[1] == 1:
print('x==1')
else:
print('x!=0 and x!=1')
x!=0 and x!=1
for i in range(5): # range(5) だと 0,1,...,4
print(i) # for 文内はインデントを下げる
0 1 2 3 4
for i in range(5): # range(5) だと 0,1,...,4
print(i)
File "<ipython-input-50-0e78f8284010>", line 2 print(i) ^ IndentationError: expected an indented block
for i in range(1,5): # range(1,5) だと 1,2,...,4
print(i)
1 2 3 4
for i in range(0, 10, 3): # range(0, 10, 3) だと 3 ごとに
print(i)
0 3 6 9
print(range(0,10) == [0,1,2,3,4,5,6,7,8,9]) # range はリストっぽいけどリストじゃない
print(list(range(0,10)) == [0,1,2,3,4,5,6,7,8,9]) # リストに変換することもできる
False True
i = 0
while i < 10: # i<10 である限りインデント以下の操作を繰り返す
i = i + 1
print(i)
1 2 3 4 5 6 7 8 9 10
range(1,100)
は$1$から$99$まで1.$0$から$99$までの偶数を表示せよ
for i in range(100):
if i % 2 == 0:
print(i)
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98
for i in range(0, 100, 2):
print(i)
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98
for i in range(100):
if i % 3 == 0:
print(i)
0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99
for i in range(1,100):
if i % 3 == 0 and i % 5 != 0:
print('Fizz')
elif i % 3 != 0 and i % 5 == 0:
print('Buzz')
elif i % 3 == 0 and i % 5 == 0:
print('FizzBuzz')
else:
print(i)
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz 31 32 Fizz 34 Buzz Fizz 37 38 Fizz Buzz 41 Fizz 43 44 FizzBuzz 46 47 Fizz 49 Buzz Fizz 52 53 Fizz Buzz 56 Fizz 58 59 FizzBuzz 61 62 Fizz 64 Buzz Fizz 67 68 Fizz Buzz 71 Fizz 73 74 FizzBuzz 76 77 Fizz 79 Buzz Fizz 82 83 Fizz Buzz 86 Fizz 88 89 FizzBuzz 91 92 Fizz 94 Buzz Fizz 97 98 Fizz
# 引数 = x, 返り値 = x + 1
def increment_one(x): # def 関数名(引数):
return x + 1
increment_one(4)
5
# 引数 = x, y, 返り値 = z = x + y
def add(x, y):
z = x + y
return z
print(add(5, 10))
print(add(add(5, 10), 20))
15 35
def add_y_ntimes(x, y, n):
if n == 1:
return x + y
return add_y_ntimes(x + y, y, n - 1) # 関数の中で自分を呼んでも良い(再帰的呼び出し)
print(add_y_ntimes(10, 1, 1))
print(add_y_ntimes(10, 1, 5))
11 15
# 何も返さなくても良い
def fizz_buzz(max_iter):
for i in range(1, max_iter+1):
if i % 3 == 0 and i % 5 != 0:
print('Fizz')
elif i % 3 != 0 and i % 5 == 0:
print('Buzz')
elif i % 3 == 0 and i % 5 == 0:
print('FizzBuzz')
else:
print(i)
fizz_buzz(10)
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz
数値が入ったリストを入力したときに、小さい順に並べ直したリストを出力する関数を書け
クイックソート
def quicksort(x):
if len(x) < 2:
return x
else:
left_list = []
right_list = []
num_pivot = 0
pivot = x[0]
for each_element in x:
if each_element < pivot:
left_list.append(each_element)
elif each_element > pivot:
right_list.append(each_element)
else:
num_pivot = num_pivot + 1
return quicksort(left_list) + num_pivot * [pivot] + quicksort(right_list)
quicksort([-1, 2, 1, 1, 1,3])
[-1, 1, 1, 1, 2, 3]
quicksort([1,2,3,4,5]) == [1,2,3,4,5]
True