Python

以下のサイトを用いる。

以下補足

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<, <=, >, >=, ==, !=
6not
7and
8or

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型:集合

リストと違い、要素に重複が無く、順番も決まっていない。lenaddなどリストと多くの同様の関数が使える。

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型:タプル

Python のタプルとリストの違い、タプルの使いどころ

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

ABC234 A

13.その他のPythonの機能(一部)

13.1.エラーと例外

ファイルを開く、ネットからデータを取ってくるなどの処理は必ずしも成功するとは限らない。パーミッション拒否されたり、サーバーと繋がらなかったり、そのようなときにバグを防げる。

13.2.数値計算ライブラリ

データ解析などで使う

13.3.正規表現