表示する(print)
画面に文字や数を出す
print("Hello")
print(10)
print("合計:", 3 + 5)
print("a", "b", sep="-")
print("改行なし", end="")
忘れたらすぐ確認できる書き方一覧
ホームで教えている内容には解説へのリンクを付けています。 サイトではまだ扱っていないが、作るときに知っておくと便利な内容には サイト未掲載 を付けています。
プログラムの土台。変数・型・入出力をすぐ確認
画面に文字や数を出す
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("動く") # 行の後ろにも書ける
変数を文章に埋め込む
name = "茜"
score = 85.5
print(f"こんにちは、{name}さん")
print(f"点数: {score:.1f}")
キーボードから文字を読む(手元環境向け)
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)
条件で処理を分ける
score = 80
if score >= 80:
print("合格")
elif score >= 60:
print("もう少し")
else:
print("復習しよう")
含まれているかを調べる
print("a" in "cat")
print(3 in [1, 2, 3])
print("name" in {"name": "葵"})
短い分岐/値で振り分け(3.10+)
msg = "合格" if score >= 60 else "不合格"
match cmd:
case "start":
print("開始")
case _:
print("不明")
for / while と、ループ周りの定番パターン
決まった回数や要素を順に処理
for i in range(3):
print(i)
for fruit in ["りんご", "みかん"]:
print(fruit)
開始・終了・刻み
list(range(5))
list(range(1, 6))
list(range(0, 10, 2))
list(range(5, 0, -1))
条件が続くあいだくり返す
n = 0
while n < 3:
print(n)
n += 1
くり返しを途中で制御
for i in range(5):
if i == 2:
continue
if i == 4:
break
print(i)
番号付き・複数を同時に回す
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))
重複なし・所属判定が速い
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
可変引数や短い関数
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")
カレントや存在確認など
import os
print(os.getcwd())
print(os.path.join("folder", "a.py"))
print(os.path.exists("a.py"))
os.makedirs("out", exist_ok=True)
パス操作をもっと書きやすく
from pathlib import Path
p = Path("folder") / "a.txt"
print(p.exists(), p.suffix)
p.write_text("hello", encoding="utf-8")
エラーが起きても止まらないようにする
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
追加インストールなしで使える道具箱。はじめに ライブラリの使い方
乱数・ランダム選択・シャッフル
import random
print(random.randint(1, 6))
print(random.choice(["グー", "チョキ", "パー"]))
cards = [1, 2, 3, 4]
random.shuffle(cards)
待ち時間・タイムスタンプ
import time
print(time.time())
time.sleep(1)
print("1秒待った")
日付と時刻
from datetime import datetime, timedelta
now = datetime.now()
print(now.strftime("%Y/%m/%d %H:%M"))
tomorrow = now + timedelta(days=1)
数学の関数
import math
print(math.sqrt(16))
print(math.pi)
print(math.floor(3.7), math.ceil(3.2))
ファイルやディレクトリの操作
import os
print(os.getcwd())
print(os.listdir("."))
print(os.path.join("a", "b.txt"))
実行に関わる情報・引数
import sys
print(sys.version)
print(sys.argv)
sys.exit(0)
設定やAPIのデータの読み書き
import json
data = {"name": "葵", "score": 90}
s = json.dumps(data, ensure_ascii=False, indent=2)
print(json.loads(s))
表形式データの読み書き
import csv
with open("a.csv", encoding="utf-8", newline="") as f:
for row in csv.reader(f):
print(row)
パターンで文字列を探す・置換
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)
カウントやデフォルト付き辞書
from collections import Counter, defaultdict
print(Counter("banana"))
d = defaultdict(int)
d["a"] += 1
ブラウザのフリープログラミングでは使えるライブラリに限りがあります。 手元のPythonでは上の多くがそのまま使えます。
pip で入れるライブラリ。管理の基本は 外部ライブラリの管理
Webページの取得とスクレイピング
import requests
from bs4 import BeautifulSoup
res = requests.get("https://example.com")
soup = BeautifulSoup(res.text, "html.parser")
print(soup.title)
Excel(.xlsx)の読み書き
from openpyxl import Workbook, load_workbook
wb = Workbook()
ws = wb.active
ws["A1"] = "Hello"
wb.save("a.xlsx")
多次元配列と数値計算
import numpy as np
a = np.array([1, 2, 3])
print(a * 2)
print(np.mean(a))
グラフの描画
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [1, 4, 9])
plt.title("sample")
plt.show()
画像処理・カメラ
import cv2
img = cv2.imread("a.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imwrite("gray.jpg", gray)
簡単な画像加工
from PIL import Image
img = Image.open("a.jpg")
img = img.resize((200, 200))
img.save("out.jpg")
表データの処理
import pandas as pd
df = pd.read_csv("a.csv")
print(df.head())
print(df["score"].mean())
ゲームや簡単なアニメーション
# pip install pygame
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
# イベントループで描画・更新
小さなWebアプリ
# pip install flask
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "Hello"
# app.run()
ループの進捗バー
# pip install tqdm
from tqdm import tqdm
import time
for _ in tqdm(range(10)):
time.sleep(0.1)
外部ライブラリは
pip install 名前
で入れます(仮想環境の利用を推奨)。
学習の順番は
ホーム
の CH05 を見てね。