Python
以下のサイトを用いる。
- 【初心者向け】無料でPythonの基本文法を5時間で学ぼう!
- AtCoderで始めるPython入門
- 初心者向けAtcoder標準入力セット(Python)
- AtCoderの問題を分類しました
- 【Python】テキストファイル・CSVの読み込み
- ファイル操作をマスターしよう!Pythonでの読み込み・書き込み方法を徹底解説!
- PythonでExcelファイル(xlsx)を読み書きするopenpyxlの使い方
- PythonでCSVファイルを読み込み・書き込み(入力・出力)
以下補足
1.四則演算
電卓のように、整数、小数、複素数の四則計算ができる。
1.1.四則演算子
演算子 | 機能 | 実際の使い方 |
---|---|---|
+ | 加算 | print(1 + 2) |
- | 減算 | print(2 - 1) |
* | 乗算 | print(2 * 3) |
** | 累乗 | print(6 ** 10) |
/ | 除算 | print(2 / 3) |
// | 除算の商 (切り捨て) | print(31 // 7) |
% | 除算の余り | print(31 % 7) |
print(1 + 2) # 3
print(2 - 1) # 1
print(2 * 3) # 6
print((3 + 4j) * (2 + 3j)) # -6+7j Pythonでは複素数も可能
print(6 ** 10) # 60466176
print(6 / 3) # 2.0 小数であることに注意
print(6 // 3) # 2
print(31 // 7) # 4 (31 = 7*4+3)
print(31 % 7) # 3
1.2.演算子の優先順位
演算子にも優先順位があるが、数学とほぼ同様なので覚える必要は無い。
Tier | 演算子 |
---|---|
1 | () |
2 | ** |
3 | *, /, //, % |
4 | +, - |
5 | <, <=, >, >=, ==, != |
6 | not |
7 | and |
8 | or |
2.文字列
"python" のように、" (ダブルクオーテーション) に囲まれた文字を文字列 (str
) という。
ダブルクオーテーションで囲んでも、シングルクオーテーションで囲んでもよいが、ダブルクオテーションのほうがよく見かける。
print("Python") # Python
# 同じ結果となる
print('Python') # Pyhon
#数値や式でもクオテーションで囲むと文字列になる
print(2) # 2
print("2") # 2 見た目は同じだが文字列と数値は異なる
print(1 + 2) # 3
print("1 + 2") # 1 + 2
3.変数
数学と同じように、変数を使うことが出来る。変数には数値だけでなく文字列も代入できる。変数名の大文字と小文字は区別される。また、変数名の細かい付け方のルールは人や環境によって違う。例えば、is_usedと書く人もいれば、isUsedと書く人もいる。言語が推奨している書き方を調べたり、共同開発しているならチームの書き方を統一した方がよい。
x_int = 123
print(x) # 123
x_str = "hello"
print(x) # hello
左辺の変数に右辺の値を変数に入れることを代入という。数学の=
と違い、左辺と右辺は対等ではないので123 = x_int
のような書き方はできない。
また、以下のように変数を使うことでプログラムを見やすく、簡潔に書くことが出来る。
# 醜いコード
print(10 + 1)
print((10 + 1) - 2)
print(((10 + 1) - 2)**2)
# 推奨コード
a = 10 + 1
b = a - 2
c = b**2
print(a)
print(b)
print(c)
また次のように変数に代入されている値に計算をして、元の変数に再び代入するような処理もよく行われる。
x = 2
pritnt(x) # 2
x = x +3
print(x) # 5
Pythonにおける=
は左辺と右辺が等しいという意味ではなく、右辺の値を左辺の変数に代入することを意味する。そのため、3行目ではx
に3を足した数が再びx
に代入される。このような処理は次のようにも書ける。
x = 2
print(x) # 2
x += 3
print(x) # 5
このことは他の演算子にも成り立つ。
変数 += 式 # 変数 = 変数 + 式
変数 -= 式 # 変数 = 変数 - 式
変数 *= 式 # 変数 = 変数 * 式
変数 /= 式 # 変数 = 変数 / 式
変数 //= 式 # 変数 = 変数 // 式
変数 %= 式 # 変数 = 変数 % 式
変数 **= 式 # 変数 = 変数 ** 式
4.AC してみよう
コピペ AC してみましょう。
a= int(input())
b, c = map(int,input().split())
s = input()
print(a+b+c, s)
4.1. F 文字列 (F-Strings)
f"{変数}"
と書くと、変数の値が代入された状態の文字列になる。
print("2 * 3:", 2 * 3) # 2 * 3: 6
print(f"2 * 3: {2 * 3}") # 2 * 3: 6
#少し複雑になるが、次の方法も可能
print("2 * 3: {}".format(2 * 3)) # 2 * 3: 6
4.2.出力の書式指定
詳しくは、Python の文字列フォーマット(format メソッドの使い方) を参照。
print("pi = {:.4}".format(3.141592653589793238462643383279)) # 3.142
4.3.エスケープ
シングルクオーテーションを出力する際は、ダブルクォーテーションで囲み、 ダブルクオーテーションを出力する際は、シングルクォーテーションで囲むと、スマートに書ける。
print("シングルクオーテーションは ' です") # シングルクオーテーションは ' です
print('ダブルクオーテーションは " です') # ダブルクオーテーションは " です
# もちろん、以下のように出力することも可能
print('シングルクオーテーションは \' です') # シングルクオーテーションは ' です
print("ダブルクオーテーションは \" です") # ダブルクオーテーションは " です
print("バックスラッシュは \\ です") # バックスラッシュは \ です
print("改行は\nです")
# 改行は
# です
4.4.Raw 文字列 (Raw Strings)
制御文字 (\, \n といった特殊な役割を持つ文字のこと。) をそのまま出力。
print("a\\b\nA\\B")
# a\b
# A\B
print(r"a\\b\nA\\B") # a\\b\nA\\B
4.5.sep, end に値を入れる
# default は sep=" "
print(1, 2, 3, sep=" < ") # 1 < 2 < 3
# default は end="\n" (\n は改行を意味する制御文字)
print("No line break.", end="") # No line break. (改行なし)#
5.set型:集合
リストと違い、要素に重複が無く、順番も決まっていない。len
やadd
などリストと多くの同様の関数が使える。
d = {1, 2, 3, 5, 6, 9}
even = {2, 6}
print(d - even) # {1, 3, 5, 9} 差集合
print(d | even) # {0, 1, 2, 3, 4, 5, 6, 8, 9} 和集合
print(d & even) # {2, 6} 積集合
print(d ^ even) # {0, 1, 3, 4, 5, 8, 9} 対称差集合
6.tupple型:タプル
7.データ構造
データ構造とは、データの集まりをコンピュータプログラムで扱いやすいように、一定の形式で格納したものである。前述のリストや辞書などもデータ構造の1種である。また、よく使われるデータ構造として「スタック」、「キュー」、「優先度付きキュー」、「木構造」などがある。
8.enumerate
リストの要素とともにインデックスも取り出せる。
nums = [3, 1, 4, 1, 5]
for i in range(len(nums)):
print(f"nums[{i}] = {nums[i]}")
# nums[0] = 3
# nums[1] = 1
# nums[2] = 4
# nums[3] = 1
# nums[4] = 5
# 組み込み関数 enumerate を使ってもよい
nums = [3, 1, 4, 1, 5]
for i, num in enumerate(nums):
print(f"nums[{i}] = {num}")
# nums[0] = 3
# nums[1] = 1
# nums[2] = 4
# nums[3] = 1
# nums[4] = 5
9.zip
複数のリストの要素を同時に取り出せる。ループ回数は最も要素数の少ないリストに依存する。
names = ['Alice', 'Bob', 'Charlie']
ages = [24, 50, 18]
for name, age in zip(names, ages):
print(name, age)
# Alice 24
# Bob 50
# Charlie 18
10.lambda(ラムダ)関数
def calc_rect_area(height, width):
return height * width
print(calc_rect_area(20, 30)) # 600
# calc_rect_area と等価な関数
calc_rect_area3 = lambda h, w: h * w
print(calc_rect_area3(20, 30)) # 600
11.再帰関数
def pow2(n):
ans = 1
for i in range(n):
ans *= 2
return ans
def fact(n):
ans = 1
for i in range(1, n+1):
ans *= i
return ans
13.その他のPythonの機能(一部)
13.1.エラーと例外
ファイルを開く、ネットからデータを取ってくるなどの処理は必ずしも成功するとは限らない。パーミッション拒否されたり、サーバーと繋がらなかったり、そのようなときにバグを防げる。
13.2.数値計算ライブラリ
データ解析などで使う