数値・文字列・リストの基礎の要点
内容の確認日: 2026-10-04
この分野は「Pythonチュートリアル」の第 3 章 (形式ばらない Python の紹介) に対応し、数値・文字列・リストという最も基本的な型の扱いが問われます。出題数が多く、// の切り捨ての向きや、スライスの終了位置のような細かい規則で差が付きます。
演算の結果を答える問題がほとんどなので、規則を覚えるだけでなく、実際の値を手で計算できるようにしておきましょう。
数値の演算
Python の主な算術演算子は次のとおりです。
・/: 割り算。割り切れても常に float を返す (6 / 2 は 3.0)
・//: 整数除算。結果を負の無限大の方向へ切り捨てる (床関数)
・%: 剰余。結果の符号は割る数 (右側) と同じになる
・**: べき乗。右から計算する (2 ** 3 ** 2 は 2 ** 9)
-7 // 2 は -3.5 を負の方向へ切り捨てて -4 になります (0 の方向の -3 ではありません)。-7 % 2 は -7 - (2 * -4) で 1 です。
round() は、ちょうど中間の値を偶数の方へ丸めます (銀行家の丸め)。round(2.5) は 2、round(3.5) は 4 です。また、2.675 のような小数は内部では 2 進数の近似値で表されるため、round(2.675, 2) は 2.68 ではなく 2.67 になります。
print(17 / 3, 17 // 3, 17 % 3)print(6 / 2, type(6 / 2))print(-7 // 2, -7 % 2)print(2 ** 3 ** 2)print(round(2.5), round(3.5), round(2.675, 2))python3 main.py 5.666666666666667 5 2 3.0 <class 'float'> -4 1 512 2 4 2.67
int と float を混ぜて計算すると、結果は float になります。
文字列のインデックスとスライス
文字列は '...' か "..." で囲みます。複数行の文字列は """...""" で書けます。\n などのエスケープを無効にしたいときは、r"C:\name" のように前に r を付けた raw 文字列を使います。
文字列の 1 文字はインデックスで取り出します。インデックスは 0 から数え、負の数は末尾から数えます (-1 が最後の文字)。s[開始:終了] のスライスは、開始の位置を含み、終了の位置を含みません。開始・終了は省略でき、s[::2] のように 3 つ目に増分も書けます。
範囲外のインデックス (s[10] など) は IndexError になりますが、スライスは範囲外を指定してもエラーにならず、ある分だけを返します。
文字列は変更できない (イミュータブル) ので、インデックスで 1 文字だけ置き換えようとすると TypeError です。変更したいときは、新しい文字列を作ります。
s = "Python"print(s[0], s[-1], s[1:4], s[:2] + s[4:])print(s[-3:], s[::2], len(s), s[2:100])print("Py" "thon", 3 * "ab" + "c")s[0] = "J"python3 main.py P n yth Pyon hon Pto 6 thon Python abababc
例外が発生: TypeError
"Py" "thon" のように、隣り合う文字列リテラルは自動的に連結されます (変数どうしではできません)。* は文字列の繰り返しで、+ より先に計算されます。
f-string と文字列のメソッド
f"..." (f-string) の中の { } には式を書け、その値が埋め込まれます。文字列のメソッドは、元の文字列を変えずに新しい文字列を返すので、続けて呼び出せます。
name = "py"print(f"{name.upper()} は {len(name)} 文字")text = " Hello Python "print(text.strip().lower().replace("python", "world"))print(text)python3 main.py PY は 2 文字 hello world Hello Python
リストの基本
リストは [1, 2, 3] のように書き、文字列と同じくインデックスとスライスが使えます。文字列と違って変更できる (ミュータブル) ので、要素の代入や、スライスへの代入 (要素の置き換え・削除・挿入) ができます。
b = a は同じリストを指す名前を増やすだけで、a を変更すると b から見ても変わります。別のリストとしてコピーしたいときは a[:] (スライスは新しいリストを返す) を使います。
nums = [1, 2, 3, 4, 5]nums[1:3] = [20, 30, 35]print(nums, len(nums))alias = numscopy = nums[:]nums[:] = []print(alias, copy)python3 main.py [1, 20, 30, 35, 4, 5] 6 [] [1, 20, 30, 35, 4, 5]
a, b = b, a + b のような多重代入では、右辺がすべて先に (代入前の値で) 計算されてから、まとめて代入されます。
比較と真偽値
Python では 1 < 2 < 3 のように比較を連鎖でき、(1 < 2) and (2 < 3) と同じ意味になります。if や while の条件では、False のほかに、0・0.0・空の文字列 ""・空のリスト []・None などが偽とみなされます。"0" や " " は空ではないので真です。
a, b = 1, 2a, b = b, a + bprint(a, b)print(1 < 2 < 3, 3 > 2 > 2)print(bool(""), bool("0"), bool([]), bool(0.0))python3 main.py 2 3 True False False True False False
試験でよくある引っかけ
/の結果の型/は割り切れてもfloatを返します。6 / 2は3.0です。負の数の
//-7 // 2は-4です。//は負の無限大の方向へ切り捨てます。**の結合順2 ** 3 ** 2は右から計算して2 ** 9 = 512です。roundの丸め方round(2.5)は2、round(3.5)は4です。中間の値は偶数の方へ丸めます。スライスの終了位置
s[1:4]は位置 1・2・3 の 3 文字です。終了の位置は含みません。文字列への代入
s[0] = "J"はTypeErrorです。文字列は変更できません。
問題で確認する
この分野の問題を、解説つきで読めます (登録不要)。
出典・参考
- Python エンジニア育成推進協会「Python 3 エンジニア認定基礎試験」
- Python ドキュメント「Python チュートリアル」3. 形式ばらない Python の紹介
- Python ドキュメント「組み込み関数」round()
コード例は、実際に実行して結果を確認しています。