Pythonとは?
例は Pythonコード実行 で試せる
色付きの出力例は入力せず、コードの部分だけをコピーする
Pythonは、汎用性の高いプログラミング言語です。初心者でも比較的習得しやすく、様々な用途に使用することができます。
Web開発、データ分析、人工知能など、幅広い分野で活用されています。
Pythonの特徴
-
読みやすく、書きやすい
豊富なライブラリ
クロスプラットフォーム
コミュニティが大きい
文法目次
行構造
式単純文
複合文
入出力
print関数エスケープシーケンス
input関数
入力した数値の計算
変数とデータ型
変数と代入基本のデータ型
型の変換
演算子
算術演算子比較演算子と論理演算子
条件分岐
インデントとコメントif・elif・else
繰り返し
for文とrange関数while文
break文・continue文・pass文
文字列とコレクション
文字列の操作split・join・strip
リスト
リストのコピーと並べ替え
辞書
タプルと集合
内包表記とenumerate
関数
defとreturn引数の既定値と変数の範囲
ライブラリとファイル
import文と標準ライブラリwith文とファイルの読み書き
エラーへの対処
エラーメッセージの読み方try・except・finally
まとめの練習
点数の集計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
複合文
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)print関数を並べると表示結果も縦に並ぶ
5
print(1) print(2) print(3)オプション引数 end='' を設定することで改行させないようにできる
1 2 3
print(1, end='') print(2, end='') print(3)
123
本来は end='\n' が省略されている
\n は 改行 を表す 特殊記号(エスケープシーケンス) の1つ
print関数は , で区切ることで複数の式を渡すことができる
渡した式はすべて 半角スペース で区切られ, 横に並ぶ
print(1,2,3)オプション引数 sep='' を設定することで区切り文字を変更できる
1 2 3
print(1,2,3, sep='-')本来は sep=' ' (半角スペース)が省略されている
1-2-3
エスケープシーケンス
文字列の中で \ と特定の文字を組み合わせると、改行などを表せる
\n : 改行 / \t : タブ / \\ : \ 自体 / \" : ダブルクォート / \' : シングルクォート
print("1行目\n2行目") print("文字:\"Python\"") print("C:\\study")1行目 2行目 文字:"Python" C:\study
タブの表示幅は表示する場所によって変わる
文字列の前に r を付けると、通常のエスケープ処理を行わない raw文字列になる
print(r"\n は改行を表す")\n は改行を表す
input関数
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日本語コミュニティ
Progate - Pythonコース
Coursera - Python for EverybodySpecialization
参考サイト
-
Python基礎文法まとめ
SLRTE PORTAL