Pythonとは
Pythonは、読みやすい文法を大切にしたプログラミング言語です。Webアプリ、データ分析、AI、業務の自動化など幅広い用途で使われています。この講座では、分野を問わず必要になる言語の基礎を学びます。
- ファイル名の整理や集計作業の自動化
- WebサイトやWeb APIの開発
- 表形式データの分析とグラフ作成
- 機械学習や画像処理
最初からAI用ライブラリの使い方だけを覚えるのではなく、値、条件、繰り返し、関数を理解すると、サンプルを自分の目的に合わせて変更できるようになります。
Pythonを実行してみよう
公式サイトなどからPython 3をインストールし、ターミナルでバージョンを確認します。Windowsでは python、macOSやLinuxでは python3 を使う環境があります。
python3 --versionhello.py というテキストファイルを作り、次の1行を保存します。ファイル名の末尾は .py です。
print("こんにちは、Python!")python3 hello.pyこんにちは、Python!python3 の代わりに python またはWindowsの py で動くこともあります。基本の書き方
上から順番に実行される
通常、コードは上の行から順番に実行されます。文字列は引用符で囲み、数値は囲みません。文末のセミコロンは不要です。
print("1番目")
print(10 + 20)
print("3番目")1番目
30
3番目コメントとインデント
# から行末まではコメントです。条件分岐や関数の内側は、行頭を半角スペース4個で字下げします。Pythonではインデントも文法の一部です。
# 18歳以上ならメッセージを表示
age = 20
if age >= 18:
print("成人です")
print("確認終了")IndentationError になります。エディターの設定を「スペース4個」に揃えましょう。変数とデータ型
変数は値に名前を付ける仕組みです。= の右側の値を左側の名前へ代入します。変数名には役割が分かる英単語を使い、複数語は user_name のようにアンダースコアでつなぎます。
name = "Mity" # str: 文字列
age = 20 # int: 整数
height = 170.5 # float: 小数
is_student = True # bool: 真偽値
memo = None # NoneType: 値がない
print(type(name))
print(type(age))
print(type(height))
print(type(is_student))
print(type(memo))
print(f"{name}さんは{age}歳です")<class 'str'>
<class 'int'>
<class 'float'>
<class 'bool'>
<class 'NoneType'>
Mityさんは20歳ですtype()を使うと、値の型を確認できます。表示されるstr、int、float、bool、NoneTypeが、それぞれのデータ型です。f"..."はf文字列で、波かっこの中へ変数や式を書けます。True、False、Noneは先頭が大文字です。
入力と型変換
input() を使うと、キーボードから文字を受け取れます。入力結果は、数字を入力しても必ず文字列です。計算前に int() や float() で変換します。
age_text = input("年齢を入力してください: ")
age = int(age_text)
next_age = age + 1
print(f"来年は{next_age}歳です")年齢を入力してください: 20
来年は21歳ですint("二十") や int("") は ValueError になります。利用者の入力は想定どおりとは限らないため、後の「例外処理」で安全な受け取り方を学びます。演算子
| 種類 | 演算子 | 例 |
|---|---|---|
| 計算 | + - * / // % ** | 7 // 2 は3 |
| 比較 | == != > < >= <= | score >= 80 |
| 論理 | and or not | age >= 18 and has_ticket |
| 代入 | = += -= *= /= | total += 100 |
price = 500
count = 3
subtotal = price * count
tax_rate = 10
tax = subtotal * tax_rate // 100
total = subtotal + tax
print(f"小計: {subtotal}円")
print(f"消費税: {tax}円")
print(f"税込: {total}円")小計: 1500円
消費税: 150円
税込: 1650円floatによる小数計算には内部的な誤差が生じる場合があります。この例は税率を整数で持ち、//で1円未満を切り捨てています。正の値ならint()やmath.floor()でも小数部分を切り捨てられますが、実際の金額計算では法律や業務で定められた端数処理に従ってください。= と == = は代入、== は左右が等しいかの比較です。役割が異なります。条件分岐
if、elif、else で、条件に応じて実行する処理を切り替えます。条件の後ろにはコロンを書きます。
score = 82
if score >= 80:
result = "合格(よくできました)"
elif score >= 60:
result = "合格"
else:
result = "再挑戦"
print(result)合格(よくできました)上から順番に判定し、最初に真になった1つだけを実行します。80点以上の条件を60点以上より先に書くことが重要です。
繰り返し
forとrange
range(1, 6) は1から5までの整数を順番に作ります。終了値の6は含まれません。
for number in range(1, 6):
print(f"{number}回目")1回目
2回目
3回目
4回目
5回目while、break、continue
count = 3
while count > 0:
print(count)
count -= 1
print("スタート!")while の条件がいつまでも真だと処理が終わりません。上の例では count -= 1 を忘れないでください。break は途中終了、continue は今回だけを飛ばして次へ進みます。複数の値を扱うコレクション
リスト
リストは順番のある複数の値です。位置は0から数えます。
fruits = ["りんご", "みかん", "ぶどう"]
fruits.append("もも")
print(fruits[0])
print(len(fruits))
for index, fruit in enumerate(fruits, start=1):
print(f"{index}: {fruit}")りんご
4
1: りんご
2: みかん
3: ぶどう
4: もも辞書
辞書はキーと値の組を保存します。存在しない可能性があるキーは get() で安全に取得できます。
user = {"name": "Mity", "age": 20}
user["city"] = "東京"
print(user["name"])
print(user.get("email", "未登録"))
for key, value in user.items():
print(f"{key}: {value}")タプルと集合
タプルは作成後に要素を変更しない値、集合は重複しない値を扱うときに便利です。
point = (120, 80)
tags = {"Python", "Web", "Python"}
print(point[0])
print(tags) # Pythonは1つだけ内包表記
内包表記は、繰り返しながら新しいリストや辞書を簡潔に作るPythonらしい書き方です。最初は通常のfor文で処理を理解し、短く読みやすくなる場合に使いましょう。
scores = [40, 65, 80, 95]
doubled = [score * 2 for score in scores]
passed = [score for score in scores if score >= 60]
labels = {score: ("合格" if score >= 60 else "不合格") for score in scores}
print(doubled)
print(passed)
print(labels)[80, 130, 160, 190]
[65, 80, 95]
{40: '不合格', 65: '合格', 80: '合格', 95: '合格'}for文を使います。fruits[3] は IndexError になります。関数
関数は、まとまった処理へ名前を付ける仕組みです。def で定義し、引数で値を受け取り、return で結果を返します。
def calculate_total(price: int, count: int) -> int:
"""単価と個数から合計金額を返す。"""
return price * count
total = calculate_total(500, 3)
print(f"合計は{total}円です")合計は1500円です: int と -> int は型ヒントです。実行時に型を強制するものではありませんが、関数が何を受け取り何を返すか伝えられます。
- 名前から目的が分かるようにする
- 一つの関数へ一つの役割を持たせる
- 画面表示と計算処理を分ける
- 外側の変数を書き換えすぎず、結果をreturnする
デフォルト引数
def greet(name: str, message: str = "こんにちは") -> str:
return f"{message}、{name}さん"
print(greet("Mity"))
print(greet("Mity", "こんばんは"))文字列を操作する
text = " apple,orange,grape "
cleaned = text.strip()
fruits = cleaned.split(",")
print(cleaned.upper())
print(fruits)
print(" / ".join(fruits))APPLE,ORANGE,GRAPE
['apple', 'orange', 'grape']
apple / orange / grape文字列は変更できない(イミュータブルな)値です。strip() や upper() は元の文字列を書き換えず、新しい文字列を返します。
モジュールを使う
モジュールは関連する機能をまとめたファイルです。標準ライブラリはPythonと一緒に導入されており、import して利用できます。
import random
from datetime import date
dice = random.randint(1, 6)
today = date.today()
print(f"サイコロ: {dice}")
print(f"今日: {today}")random.randint(1, 6) は1から6を含む範囲から整数を返します。自作ファイルを読み込む場合は、実行時に勝手な処理が走らないよう if __name__ == "__main__": も活用します。
例外処理
利用者の入力やファイル操作は失敗することがあります。想定できる失敗は try と except で処理します。
try:
age = int(input("年齢: "))
except ValueError:
print("数字で入力してください")
else:
print(f"来年は{age + 1}歳です")except: とだけ書くと、プログラムの間違いまで隠してしまいます。上の例のように、予想している例外の種類を指定します。詳しくは例外処理とテストで、エラーメッセージの読み方、独自例外、assert、unittestを学びます。
ファイルを読み書きする
with open(...) を使うと、処理の終了時やエラー時にもファイルを自動で閉じられます。次の例で使うPath.write_text()とPath.read_text()も、内部でファイルを開閉するため、自分で閉じる処理を書く必要はありません。日本語を扱うときは文字コードを明示します。
from pathlib import Path
path = Path("message.txt")
path.write_text("Pythonを勉強中です。\n", encoding="utf-8")
content = path.read_text(encoding="utf-8")
print(content)write_text()は同名のファイルがあると、その内容を上書きします。既存の内容を残して末尾へ追記する場合は、詳細ページで扱うopen(..., mode="a")を使います。Path("message.txt") は「現在の作業ディレクトリ」を基準にします。スクリプトの場所と同じとは限りません。大切なファイルで試さず、練習用フォルダーを作りましょう。CSVとJSONを含む詳しい操作はファイルとJSONで学べます。
クラス
クラスは、データとそのデータに関する操作をまとめる設計図です。クラスから作った具体的な値をインスタンスと呼びます。
class Product:
def __init__(self, name: str, price: int):
self.name = name
self.price = price
def price_with_tax(self) -> int:
return self.price * 110 // 100
book = Product("Python入門", 2000)
print(book.name)
print(book.price_with_tax())Python入門
2200round()は一般的な四捨五入とは異なる ちょうど中間の値は偶数側へ丸めるため、round(2.5)は2、round(3.5)は4です。この例では整数のまま計算し、//で1円未満を切り捨てています。self は操作対象のインスタンス自身です。最初からすべてをクラスにせず、同じデータと処理をひとまとめにしたいときに使います。詳しくはクラスとオブジェクトで学びます。
練習問題
問題1:偶数・奇数判定
整数 number = 7 が偶数なら「偶数」、それ以外なら「奇数」と表示してください。
number = 7
if number % 2 == 0:
print("偶数")
else:
print("奇数")% 2 の余りが0なら2で割り切れます。
問題2:平均点を求める
[72, 95, 81, 68] の平均を求め、小数第1位まで表示してください。
scores = [72, 95, 81, 68]
average = sum(scores) / len(scores)
print(f"平均: {average:.1f}点")平均: 79.0点問題3:在庫を検索する関数
商品名を受け取り、辞書にあれば在庫数、なければ0を返す関数を作ってください。
stocks = {"りんご": 5, "みかん": 8}
def find_stock(name: str) -> int:
return stocks.get(name, 0)
print(find_stock("みかん"))
print(find_stock("もも"))8
0次に学ぶこと
基礎を読み終えたら、次の4テーマで「小さなコード」から「管理できるプログラム」へ進みましょう。
さらに学習を広げる
- 内包表記:リスト・辞書・集合を簡潔に組み立てる
- mypy:型ヒントを使って型の不一致を静的に確認する
- Ruff・Black:コードの問題を検査し、書式を統一する
- Flask・Django・FastAPI:WebサイトやWeb APIを作る
- asyncio:待ち時間のある複数の処理を非同期に進める
ツールやフレームワークを一度に覚える必要はありません。まず小さなプログラムを完成させ、その目的に必要なテーマを一つずつ選びましょう。