CHEAT SHEET

チートシート

忘れたらすぐ確認できる書き方一覧

ホームで教えている内容には解説へのリンクを付けています。 サイトではまだ扱っていないが、作るときに知っておくと便利な内容には サイト未掲載 を付けています。

プログラムの土台。変数・型・入出力をすぐ確認

表示する(print)

画面に文字や数を出す

print("Hello")
print(10)
print("合計:", 3 + 5)
print("a", "b", sep="-")
print("改行なし", end="")

変数

名前をつけて値を覚えておく

name = "葵"
age = 15
print(name, age)
x = y = 0
a, b = 1, 2

データ型

よく使う型の例

s = "文字"      # str
n = 10          # int
x = 3.14        # float
ok = True       # bool
nothing = None  # 値なし
print(type(n))

型の変換

文字列と数を行き来する

n = int("12")
s = str(12)
x = float("3.5")
print(bool(0), bool(1))
print(list("abc"))

コメント

実行されないメモ

# これはコメント
print("動く")  # 行の後ろにも書ける

f文字列

変数を文章に埋め込む

name = "茜"
score = 85.5
print(f"こんにちは、{name}さん")
print(f"点数: {score:.1f}")

入力を受け取る(input)

キーボードから文字を読む(手元環境向け)

name = input("名前は? ")
age = int(input("年齢は? "))
print(f"{name}さん、{age}歳")
サイト未掲載

ヘルプ・調べる

その場で使い方を確認する

help(str)
print(dir(list))
print(len("abc"))

文字の取り出し・加工・検索

インデックス・スライス

文字や要素を取り出す(0始まり)

s = "Python"
print(s[0])      # P
print(s[-1])     # n
print(s[0:3])    # Pyt
print(s[::-1])   # 逆順

よく使う文字列メソッド

大文字小文字・空白・置換

s = "  Hello, Python  "
print(s.strip())
print(s.lower(), s.upper())
print(s.replace("Python", "World"))
print("py" in s.lower())

分割と結合

カンマ区切りなどをリストに/戻す

line = "りんご,みかん,ぶどう"
fruits = line.split(",")
print(fruits)
print("-".join(fruits))

検索・判定

含まれているか・始まり/終わり

s = "score_01.csv"
print(s.startswith("score"))
print(s.endswith(".csv"))
print(s.find("01"))
print("123".isdigit())
サイト未掲載

複数行文字列

長い文章やテンプレ

msg = """1行目
2行目
3行目"""
print(msg)
サイト未掲載

エンコード(文字化け対策)

ファイルやネットで日本語を扱うとき

s = "こんにちは"
b = s.encode("utf-8")
print(b.decode("utf-8"))
# open(..., encoding="utf-8")

計算・比較・分岐

四則演算

計算の基本

print(10 + 3)
print(10 - 3)
print(10 * 3)
print(10 / 3)
print(10 // 3)
print(10 % 3)
print(2 ** 3)

代入演算・優先順位

計算しながら代入、その他の演算

n = 10
n += 3
n *= 2
print(n)
print(2 + 3 * 4)  # 14

比較

True / False になる

print(5 == 5)
print(5 != 3)
print(5 > 3)
print(5 >= 5)
print(5 < 10)

論理演算

条件を組み合わせる

print(True and False)
print(True or False)
print(not True)
age = 15
print(age >= 13 and age < 18)

if / elif / else

条件で処理を分ける

score = 80
if score >= 80:
    print("合格")
elif score >= 60:
    print("もう少し")
else:
    print("復習しよう")

in 演算子

含まれているかを調べる

print("a" in "cat")
print(3 in [1, 2, 3])
print("name" in {"name": "葵"})
サイト未掲載

三項演算・match

短い分岐/値で振り分け(3.10+)

msg = "合格" if score >= 60 else "不合格"

match cmd:
    case "start":
        print("開始")
    case _:
        print("不明")

for / while と、ループ周りの定番パターン

for(回数・リスト)

決まった回数や要素を順に処理

for i in range(3):
    print(i)

for fruit in ["りんご", "みかん"]:
    print(fruit)

range の使い方

開始・終了・刻み

list(range(5))
list(range(1, 6))
list(range(0, 10, 2))
list(range(5, 0, -1))

while

条件が続くあいだくり返す

n = 0
while n < 3:
    print(n)
    n += 1

break / continue

くり返しを途中で制御

for i in range(5):
    if i == 2:
        continue
    if i == 4:
        break
    print(i)

enumerate / zip

番号付き・複数を同時に回す

names = ["葵", "茜"]
for i, name in enumerate(names, start=1):
    print(i, name)

scores = [80, 90]
for name, score in zip(names, scores):
    print(name, score)

内包表記(リスト)

短い変換・絞り込みを1行で

nums = [1, 2, 3, 4, 5]
squares = [n * n for n in nums]
evens = [n for n in nums if n % 2 == 0]

リスト・タプル・集合・辞書

リスト

順番つき・変更できる集まり

nums = [10, 20, 30]
print(nums[0])
nums.append(40)
print(len(nums))

よく使うリスト操作

追加・削除・並べ替え

a = [3, 1, 2]
a.append(4)
a.insert(0, 0)
a.pop()
a.sort()
print(sum(a), max(a), min(a))

辞書

キーと値の組み合わせ

user = {"name": "葵", "age": 15}
print(user["name"])
user["age"] = 16
print(user.get("score", 0))
for k, v in user.items():
    print(k, v)

辞書の便利操作

追加・削除・キー一覧

d = {"a": 1, "b": 2}
d["c"] = 3
d.update({"d": 4})
print(d.keys(), d.values())
print(d.pop("a", None))

集合(set)

重複なし・所属判定が速い

a = {1, 2, 3}
b = {2, 3, 4}
print(a | b)
print(a & b)
print(a - b)
print(set([1, 1, 2]))
サイト未掲載

タプル

順番つき・変更できない

point = (10, 20)
x, y = point
print(x, y)
one = (1,)

コピーに注意

代入だけでは中身が共有されることがある

a = [1, 2, 3]
b = a          # 同じリスト
c = a.copy()   # 浅いコピー
import copy
d = copy.deepcopy(a)

処理をまとめる・再利用する

関数の定義

名前をつけて呼び出せる処理

def greet(name):
    return f"こんにちは、{name}さん"

print(greet("葵"))

def add(a, b=0):
    return a + b

*args / **kwargs・lambda

可変引数や短い関数

def total(*nums):
    return sum(nums)

print(total(1, 2, 3))
double = lambda x: x * 2
print(double(5))

組み込み関数

よく使う用意済みの関数

print(len([1, 2, 3]))
print(sum([1, 2, 3]))
print(sorted([3, 1, 2]))
print(any([0, 0, 1]), all([1, 1, 1]))

クラスの基本

データと操作をひとまとめに

class Player:
    def __init__(self, name, hp=100):
        self.name = name
        self.hp = hp

    def damage(self, n):
        self.hp -= n

p = Player("葵")
p.damage(10)
サイト未掲載

モジュールとして分ける

別ファイルの関数を使う

import utils
utils.hello()

from utils import hello
hello()

if __name__ == "__main__":
    print("このファイルを実行した")
サイト未掲載

型ヒント

引数と戻り値の型を書いておく

def add(a: int, b: int) -> int:
    return a + b

保存・読み込み・エラー対応(手元環境向け)

テキストファイルの読み書き

with で開くと閉じ忘れ防止

with open("data.txt", encoding="utf-8") as f:
    text = f.read()

with open("out.txt", "w", encoding="utf-8") as f:
    f.write("1行目\n")

os(パス・フォルダ)

カレントや存在確認など

import os
print(os.getcwd())
print(os.path.join("folder", "a.py"))
print(os.path.exists("a.py"))
os.makedirs("out", exist_ok=True)
サイト未掲載

pathlib

パス操作をもっと書きやすく

from pathlib import Path
p = Path("folder") / "a.txt"
print(p.exists(), p.suffix)
p.write_text("hello", encoding="utf-8")

try / except

エラーが起きても止まらないようにする

try:
    n = int("abc")
except ValueError:
    print("数に変換できない")
finally:
    print("最後に必ず実行")

よくあるエラーの意味

メッセージから原因を当てる

# SyntaxError  … 書き方ミス
# NameError    … 未定義の名前
# TypeError    … 型が合わない
# IndexError   … 番号が範囲外
# KeyError     … 辞書にキーがない
# FileNotFoundError … ファイルがない
サイト未掲載

自分で例外を出す

不正な値を早めに止める

def set_age(age):
    if age < 0:
        raise ValueError("年齢は0以上")
    return age

追加インストールなしで使える道具箱。はじめに ライブラリの使い方

random

乱数・ランダム選択・シャッフル

import random
print(random.randint(1, 6))
print(random.choice(["グー", "チョキ", "パー"]))
cards = [1, 2, 3, 4]
random.shuffle(cards)

time

待ち時間・タイムスタンプ

import time
print(time.time())
time.sleep(1)
print("1秒待った")

datetime

日付と時刻

from datetime import datetime, timedelta
now = datetime.now()
print(now.strftime("%Y/%m/%d %H:%M"))
tomorrow = now + timedelta(days=1)

math

数学の関数

import math
print(math.sqrt(16))
print(math.pi)
print(math.floor(3.7), math.ceil(3.2))

os

ファイルやディレクトリの操作

import os
print(os.getcwd())
print(os.listdir("."))
print(os.path.join("a", "b.txt"))

sys

実行に関わる情報・引数

import sys
print(sys.version)
print(sys.argv)
sys.exit(0)

json

設定やAPIのデータの読み書き

import json
data = {"name": "葵", "score": 90}
s = json.dumps(data, ensure_ascii=False, indent=2)
print(json.loads(s))
サイト未掲載

csv

表形式データの読み書き

import csv
with open("a.csv", encoding="utf-8", newline="") as f:
    for row in csv.reader(f):
        print(row)
サイト未掲載

re(正規表現)

パターンで文字列を探す・置換

import re
s = "tel: 090-1234-5678"
m = re.search(r"\d{2,4}-\d{2,4}-\d{4}", s)
print(m.group() if m else None)
サイト未掲載

collections

カウントやデフォルト付き辞書

from collections import Counter, defaultdict
print(Counter("banana"))
d = defaultdict(int)
d["a"] += 1

ブラウザのフリープログラミングでは使えるライブラリに限りがあります。 手元のPythonでは上の多くがそのまま使えます。

pip で入れるライブラリ。管理の基本は 外部ライブラリの管理

requests / BeautifulSoup

Webページの取得とスクレイピング

import requests
from bs4 import BeautifulSoup

res = requests.get("https://example.com")
soup = BeautifulSoup(res.text, "html.parser")
print(soup.title)

openpyxl

Excel(.xlsx)の読み書き

from openpyxl import Workbook, load_workbook
wb = Workbook()
ws = wb.active
ws["A1"] = "Hello"
wb.save("a.xlsx")

NumPy

多次元配列と数値計算

import numpy as np
a = np.array([1, 2, 3])
print(a * 2)
print(np.mean(a))

Matplotlib

グラフの描画

import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [1, 4, 9])
plt.title("sample")
plt.show()

OpenCV

画像処理・カメラ

import cv2
img = cv2.imread("a.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imwrite("gray.jpg", gray)

Pandas

表データの処理

import pandas as pd
df = pd.read_csv("a.csv")
print(df.head())
print(df["score"].mean())
サイト未掲載

pygame

ゲームや簡単なアニメーション

# pip install pygame
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
# イベントループで描画・更新
サイト未掲載

Flask

小さなWebアプリ

# pip install flask
from flask import Flask
app = Flask(__name__)

@app.route("/")
def index():
    return "Hello"

# app.run()
サイト未掲載

tqdm

ループの進捗バー

# pip install tqdm
from tqdm import tqdm
import time
for _ in tqdm(range(10)):
    time.sleep(0.1)

外部ライブラリは pip install 名前 で入れます(仮想環境の利用を推奨)。 学習の順番は ホーム の CH05 を見てね。