Python入門

実践コーディング / Pythonコード実行

Pythonとは?

例は Pythonコード実行 で試せる
色付きの出力例は入力せず、コードの部分だけをコピーする

Pythonは、汎用性の高いプログラミング言語です。初心者でも比較的習得しやすく、様々な用途に使用することができます。
Web開発、データ分析、人工知能など、幅広い分野で活用されています。

Pythonの特徴

文法目次

Python文法 - 行構造

*各要素の説明は下の各カテゴリーで説明しています

式

文字列: "apple"

数値: 10

演算式: 2+5

変数: a

リスト: [10, 20, 30]

添字(インデックス): [10, 20, 30][1]

スライス: [10, 20, 30][0:2]

呼び出し: abs(-25)
※abs関数は絶対値を返す組み込み関数

文

文とは、代入や繰り返しなどの処理を表す命令
式が値を表すのに対し、文は処理の手順を表す

Pythonにおける文は 単純文 と 複合文 に分かれている

単純文

代入文: hoge = 10

pass文: pass

del文: del hoge

return文: return hoge

break文: break

continue文: continue

import文: import math

複合文

if文
hoge = 10
if hoge > 5:
    pass
                    
while文
hoge = 0
while hoge < 3:
    hoge += 1
                    
for文
hoge = [10, 20, 30]
for fuga in hoge:
    print(fuga)
                    

Python文法 - 入出力

print関数

print(5)

5
print関数を並べると表示結果も縦に並ぶ
print(1)
print(2)
print(3)

1 2 3
オプション引数 end='' を設定することで改行させないようにできる
print(1, end='')
print(2, end='')
print(3)

123

本来は end='\n' が省略されている
\n は 改行 を表す 特殊記号(エスケープシーケンス) の1つ

print関数は , で区切ることで複数の式を渡すことができる
渡した式はすべて 半角スペース で区切られ, 横に並ぶ

print(1,2,3)

1 2 3
オプション引数 sep='' を設定することで区切り文字を変更できる
print(1,2,3, sep='-')

1-2-3
本来は sep=' ' (半角スペース)が省略されている

エスケープシーケンス

文字列の中で \ と特定の文字を組み合わせると、改行などを表せる

\n : 改行 / \t : タブ / \\ : \ 自体 / \" : ダブルクォート / \' : シングルクォート

print("1行目\n2行目")
print("文字:\"Python\"")
print("C:\\study")

1行目
2行目
文字:"Python"
C:\study

タブの表示幅は表示する場所によって変わる
文字列の前に r を付けると、通常のエスケープ処理を行わない raw文字列になる

print(r"\n は改行を表す")

\n は改行を表す

input関数

入力された1行を文字列として受け取る

input関数は入力された1行を文字列として返す
数値として計算するには int や float で変換する

name = input("名前:")
print("こんにちは、" + name + "さん")

名前:こんにちは、太郎さん

このサイトでは実行前に標準入力へ 太郎 と記入する
入力データは自動では表示されず、input の案内文が実行結果に表示される

入力した数値の計算

入力した文字列を数値に変換して計算する

int は整数、float は小数を扱う数値に変換する

price = int(input())
count = int(input())
print(price * count)

360

標準入力に 120 と 3 を1行ずつ記入する
int("abc") のように変換できない文字列を渡すと ValueError になる

Python文法 - 変数とデータ型

変数と代入

値に名前を付け、代入して使う

変数は値に名前を付けて扱うためのもの
= は右側の値を左側の変数へ代入する

price = 120
count = 3
print(price * count)
count += 1
print(count)

360
4

count += 1 は count = count + 1 と同じ意味
大文字と小文字は区別される。数字で始まる名前や if などの予約語は使えない

基本のデータ型

値の種類によって扱える操作が変わる

int : 整数 / float : 小数を扱う数値 / str : 文字列 / bool : 真偽値
None は値がないことなどを表す

print(type(10).__name__)
print(type(2.5).__name__)
print(type("10").__name__)
print(type(True).__name__)
print(None)

int
float
str
bool
None

型の変換

目的に合わせて値の型を変換する

文字列の "10" と数値の 10 は異なる
計算や文字列の連結の前に、型をそろえる

print(int("10") + 5)
print(float("2.5") * 2)
print("点数:" + str(80))

15
5.0
点数:80

文法目次に戻る

Python文法 - 演算子

算術演算子

数値の計算に使う記号

+ : 足し算 / - : 引き算 / * : 掛け算 / / : 割り算
// : 商を小さい側の整数へ切り下げる / % : 余り / ** : べき乗

print(7 + 2, 7 - 2, 7 * 2)
print(7 / 2, 7 // 2, 7 % 2)
print(2 ** 3)
print((2 + 3) * 4)

9 5 14
3.5 3 1
8
20

掛け算・割り算は足し算・引き算より先に計算される。順序を明確にするには () を使う
負の数では -7 // 2 は -4 になる。0で割ると ZeroDivisionError になる

比較演算子と論理演算子

値や条件を比較し、真偽を判定する

== : 等しい / != : 等しくない / < : より小さい / <= : 以下 / > : より大きい / >= : 以上
and : 両方が成り立つ / or : どちらかが成り立つ / not : 真偽を反転する

score = 75
print(score >= 60)
print(score == 100)
print(60 <= score and score < 80)
print(not (score < 60))

True
False
True
True

= は代入、== は比較なので混同しない

文法目次に戻る

Python文法 - 条件分岐

インデントとコメント

字下げで処理をまとめ、コメントで説明を残す

複合文では行末に : を付け、内側の処理を字下げする
同じまとまりは同じ深さにそろえる。通常は半角スペース4個を使う

# 合格かどうかを判定する
score = 80
if score >= 60:
    print("合格")
    print("よくできました")
print("判定終了")

合格
よくできました
判定終了

# から行末まではコメントとなり、処理として実行されない
全角スペースやタブとスペースの混在に注意する

if・elif・else

条件に応じて実行する処理を選ぶ

if の条件が成り立つときに内側を実行する
elif で別の条件を追加し、どれにも当てはまらないときは else を実行する

score = 75
if score >= 80:
    print("A")
elif score >= 60:
    print("B")
else:
    print("C")

B

上から順に調べ、最初に成り立った条件の処理だけを実行する

文法目次に戻る

Python文法 - 繰り返し

for文とrange関数

値を順に取り出しながら処理を繰り返す

for はリストなどから値を順に取り出して繰り返す
range(開始, 終了) は終了の値を含まない整数の並びを表す

total = 0
for number in range(1, 6):
    total += number
print(total)

15

range(5) は 0, 1, 2, 3, 4
range(1, 6, 2) は 1, 3, 5。3つ目の引数で増減の幅を指定できる

while文

条件が成り立つ間、処理を繰り返す

while は条件が成り立つ間、処理を繰り返す
条件が変わるように変数を更新する

count = 3
while count > 0:
    print(count)
    count -= 1
print("終了")

3
2
1
終了

更新を忘れると無限ループになることがある。このサイトでは「停止する」で中断できる

break文・continue文・pass文

繰り返しを終了・スキップし、空の処理も書ける

break は最も内側の繰り返しを終了する
continue は残りの処理を飛ばして次の繰り返しへ進む
pass は何もしない文。処理を後から書く場合などに使う

for number in range(1, 7):
    if number == 2:
        continue
    if number == 5:
        break
    print(number)

1
3
4

文法目次に戻る

Python文法 - 文字列とコレクション

文字列の操作

文字を取り出し、つなぎ、整えて表示する

文字列は + で連結でき、len関数で長さを調べられる
添字は0から数える。スライス [開始:終了] は終了の位置を含まない

text = "Python"
print(len(text))
print(text[0], text[-1])
print(text[1:4])
name = "太郎"
score = 80
print(f"{name}さんは{score}点")

6
P n
yth
太郎さんは80点

f を付けた文字列では、{} の中に変数や式を入れられる
文字列の一部を text[0] = "p" のように直接変更することはできない

split・join・strip

文字列を分割・結合し、前後の空白を取り除く

split は文字列を分割し、join は複数の文字列をつなぐ
strip は前後の空白や改行を取り除く

text = "  red blue green  "
colors = text.strip().split()
print(colors)
print("-".join(colors))

['red', 'blue', 'green']
red-blue-green

リスト

複数の値を順番にまとめ、追加や変更を行う

リストは複数の値を順番にまとめるもの
[] で作り、添字で取り出しや変更ができる

scores = [70, 80, 90]
scores.append(100)
scores[0] = 75
print(scores)
print(len(scores))
print(sum(scores))

[75, 80, 90, 100]
4
345

append は末尾へ追加する。pop は指定した位置の要素を取り出して削除する(省略時は末尾)
存在しない添字を指定すると IndexError になる

リストのコピーと並べ替え

リストを複製し、値の並びを整える

そのまま別の変数に代入すると同じリストを参照する
独立したリストが必要なら copy を使う

a = [3, 1, 2]
b = a.copy()
b.append(4)
print(a)
print(sorted(b))
print(b)

[3, 1, 2]
[1, 2, 3, 4]
[3, 1, 2, 4]

sorted は並べ替えた新しいリストを返す。sort メソッドは元のリストを並べ替え、None を返す
copy は浅いコピーなので、入れ子のリストの内側までは複製しない

辞書

キーと値を組にしてデータを管理する

辞書はキーと値を組にして管理する
{キー: 値} で作り、キーで値を取り出す

student = {"name": "太郎", "score": 80}
student["score"] = 85
print(student["name"])
print(student.get("class", "未登録"))
for key, value in student.items():
    print(key, value)

太郎
未登録
name 太郎
score 85

存在しないキーを [] で指定すると KeyError になる。get なら見つからないときの値を指定できる

タプルと集合

変更できない並びと、重複のない集まりを使う

タプルは要素を変更できない並び。集合は重複のない値の集まり
集合には添字による取り出しや決まった表示順序はない

point = (3, 5)
x, y = point
print(x, y)
numbers = {1, 2, 2, 3}
print(len(numbers))
print(2 in numbers)

3 5
3
True

空の集合は set() で作る。{} は空の辞書になる

内包表記とenumerate

リストを簡潔に作り、番号付きで取り出す

内包表記は繰り返しからリストを作る書き方
enumerate は要素と一緒に番号を取り出せる

squares = [n * n for n in range(1, 4)]
print(squares)
for index, value in enumerate(squares, start=1):
    print(index, value)

[1, 4, 9]
1 1
2 4
3 9

文法目次に戻る

Python文法 - 関数

defとreturn

処理に名前を付け、戻り値を返す

def で処理に名前を付け、関数としてまとめる
引数は関数に渡す値、戻り値は return で呼び出し元へ返す値

def area(width, height):
    return width * height

result = area(5, 3)
print(result)

15

print は表示、return は値を返す処理であり役割が異なる
return を実行すると関数は終了する。戻り値を指定しない場合は None が返る

引数の既定値と変数の範囲

省略時の値と、変数を使える範囲を知る

引数に既定値を設定すると、省略されたときにその値を使う
関数の中で代入した変数は通常、その関数の中で使うローカル変数になる

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

print(greet("太郎"))
print(greet("花子", message="おはよう"))

こんにちは、太郎さん
おはよう、花子さん

この例の text を関数の外で直接使うことはできない
リストなど変更可能な値を既定値にすると呼び出し間で共有されるため、入門段階では避ける

文法目次に戻る

Python文法 - ライブラリとファイル

import文と標準ライブラリ

モジュールを読み込み、用意された機能を使う

import でモジュールを読み込み、モジュール名.関数名 の形で使う
標準ライブラリはPythonに付属する機能の集まり

import math
import statistics

print(math.sqrt(81))
print(statistics.mean([60, 80, 100]))

9.0
80

numpy や matplotlib などは追加のライブラリ。このサイトの実行ページでは追加ライブラリの読み込みには対応していない

with文とファイルの読み書き

ファイルを読み書きし、処理後に閉じる

open でファイルを開く。with を使うと処理の後に自動で閉じる
"w" は書き込み(既存の内容を上書き)、"r" は読み込み、"a" は追記

with open("practice.txt", "w", encoding="utf-8") as file:
    file.write("Pythonを練習中\n")

with open("practice.txt", "r", encoding="utf-8") as file:
    text = file.read()
print(text, end="")

Pythonを練習中

このサイトではブラウザー内の仮想ファイルに保存される。端末のファイルを直接書き換える処理ではない
仮想ファイルは実行環境の再起動やページを閉じると失われる。コードの保存には「.pyファイルを保存」を使う

文法目次に戻る

Python文法 - エラーへの対処

エラーメッセージの読み方

エラーの種類と行番号から原因を探す

まずエラー名と最後の説明を読み、main.py の行番号を確認する
SyntaxError : 文法の誤り / IndentationError : 字下げの誤り
NameError : 未定義の名前 / TypeError : 型が合わない操作
ValueError : 不適切な値 / IndexError : 添字が範囲外 / KeyError : 存在しないキー
ZeroDivisionError : 0による除算 / EOFError : 入力の不足

このサイトで input() の回数に対して標準入力の行数が不足すると EOFError になる
一度にすべて変更せず、原因と思われる箇所を直して実行し直す

try・except・finally

想定した例外に対応し、後片付けを行う

try の処理中に指定した例外が起きたら except の処理へ進む
finally は例外の有無にかかわらず、後片付けなどで実行する

text = "abc"
try:
    number = int(text)
    print(number * 2)
except ValueError:
    print("整数を入力してください")
finally:
    print("確認終了")

整数を入力してください
確認終了

想定できる例外を指定して扱う。すべてのエラーを無条件に無視すると、不具合に気付けなくなる

文法目次に戻る

Python文法 - まとめの練習

点数の集計

学んだ文法を組み合わせ、点数を集計する

入力・リスト・繰り返し・条件分岐・関数を組み合わせる
標準入力に 60、80、100 を1行ずつ入力し、平均点と判定を表示する

def judge(average):
    if average >= 80:
        return "よくできました"
    return "復習してみよう"

scores = []
for _ in range(3):
    scores.append(int(input()))

average = sum(scores) / len(scores)
print(f"平均点:{average:.1f}")
print(judge(average))

平均点:80.0
よくできました

:.1f は小数点以下1桁で表示する指定
練習1:入力を5人分に変更する
練習2:max と min を使って最高点と最低点を追加する
練習3:0〜100以外の点数を受け付けない処理を追加する

文法目次に戻る

学習リソース

Pythonコード実行で練習する

Python公式チュートリアル / 組み込み関数

参考サイト