1. 3件に1から番号が振られる
  2. 2件でも正しく振られる
  3. 1件のときは改行が入らない
  4. 5件でも番号が続く
  5. 空のリストは空文字を返す
コース一覧
Python入門:基礎文法編
enumerateで番号付け

Python入門:基礎文法編

変数、条件分岐、ループ、関数、リスト・辞書、ファイル操作など Python の基礎文法を、ブラウザ上で毎レッスン実際にコードを書き、自分だけの「おこづかい帳アプリ」を育てながら学べる無料コースです。プログラミング完全未経験から始められ、環境構築や事前知識は一切不要です。約 18 時間 (1 日 30 分 × 37 日) で 74 レッスンを修了でき、修了後は入力・集計・ファイル保存まで備えたスクリプトを1から書けるようになります。

1
はじめての Python
01. printで表示15分
02. 文字列の連結15分
03. 四則演算15分
04. 実行順序15分
05. コメント15分
06. エラーを読んでみる15分
07. つくる:レシート表示15分
08. 第1章クイズ10分
2
変数とデータ型
01. 変数15分
02. typeで型を調べる15分
03. 数値への変換15分
04. 文字列への変換15分
05. boolとNone15分
06. f-string15分
07. 入力を受け取る15分
08. つくる:入力できるおこづかい帳15分
09. 第2章クイズ10分
3
演算子と式
01. 比較演算子15分
02. 論理演算子15分
03. in演算子15分
04. 剰余と切り捨て除算15分
05. 連鎖比較と優先順位15分
06. 三項演算子15分
07. つくる:予算チェック15分
08. 第3章クイズ10分
4
条件分岐
01. if文の基本15分
02. if / elif / else15分
03. 条件の組み合わせ15分
04. match文15分
05. 定番:FizzBuzz判定15分
06. デフォルト値とor15分
07. つくる:カテゴリ自動判定15分
08. 第4章クイズ10分
5
ループ
01. forで合計15分
02. whileで繰り返す15分
03. rangeとstep15分
04. breakとcontinue15分
05. enumerateで番号付け15分
06. zipで組み合わせ15分
07. 入れ子ループ15分
08. つくる:何件でも記録15分
09. 第5章クイズ10分
6
関数
01. 関数を定義する15分
02. 引数と戻り値15分
03. デフォルト引数15分
04. キーワード引数15分
05. 複数の戻り値15分
06. divmod15分
07. 変数のスコープ15分
08. lambda関数15分
09. つくる:関数に分割15分
10. 第6章クイズ10分
7
リストと辞書
01. リストの追加と削除15分
02. スライス15分
03. 辞書の基本15分
04. 辞書を走査15分
05. keyでソート15分
06. setで重複除去15分
07. リスト内包表記15分
08. タプルアンパック15分
09. つくる:カテゴリ別集計15分
10. 第7章クイズ10分
8
ファイルとエラー処理
01. ファイルを読み込む15分
02. ファイルに書き込む15分
03. withで安全に扱う15分
04. CSV形式で保存15分
05. try-exceptで備える15分
06. 例外の種類15分
07. つくる:保存機能15分
08. 第8章クイズ10分
9
総合制作
01. 全機能を統合しよう15分
02. 月間レポート機能15分
03. 自由拡張15分
04. 完成と次のステップ10分

enumerateで番号付け

enumerate で番号と中身を同時に

何周目かを数えるためだけの変数

おこづかい帳の一覧をただ並べるだけでは、「何件目を消したいのか」を伝えられません。行の頭に番号が振ってあれば、あとから「2 番を削除」と指示できます。

番号を振るには、いまが何周目なのかを知る必要があります。素直に書くと、番号のための変数を自分で用意して、毎周 1 ずつ足すことになります。

Python

names = ["りんご", "みかん", "パン"] i = 1 for name in names: print(i, name) i = i + 1

動きはしますが、i = 1 と i = i + 1 という「番号の世話」がループの本題に混ざっています。初期化と更新のどちらかを書き忘れれば、番号だけが狂います。

番号は 0 から始まる

enumerate にリストを渡すと、番号と要素の 2 つ組 を順に出してくれます。

Python

for i, name in enumerate(names): print(i, name)

0 りんご、1 みかん、2 パン と表示されます。for のうしろに名前を 2 つカンマで並べているところが新しい点です。出てきた 2 つ組が、順番どおりに i と name へ割り当てられます。番号の世話をする 2 行が丸ごと消えました。

ただし番号は既定で 0 から始まります。人に見せる一覧は 1 から始めたいので、2 つ目の引数で開始番号を指定します。

Python

for i, name in enumerate(names, 1): print(i, name)

これで 1 りんご から始まります。enumerate(names, 1) の 1 が開始番号です。

区切りは行のうしろではなく手前に足す

このコースの採点は戻り値を見るので、print ではなく 1 本の文字列を返します。ここで問題になるのが、行と行のあいだにだけ区切りを入れ、末尾には付けない、という点です。

Python

line = "" for word in ["赤", "青", "緑"]: if line != "": line = line + "、" line = line + word print(line)

赤、青、緑 が出ます。まだ 1 件も入っていないときは区切りを足さず、2 件目以降のときだけ 手前に 足しています。うしろに足す形にすると、最後の 1 件のあとにも区切りが残ってしまいます。

解説

末尾の余分な改行は、画面で見ても区別がつきません。テストが落ちて原因が分からないときに、最初に疑うのがここです。

やってみよう

関数 numbered_list(names) を実装してください。引数 names は品名 (str) が並んだリストです。

1 から始まる通し番号を振り、"1. りんご" の形に整えた行を、改行 \n でつないだ 1 本の文字列を return します。番号のうしろは半角ドットと半角スペース 1 つです。末尾に改行は付けません。

numbered_list(["りんご", "みかん"]) の答えは "1. りんご\n2. みかん" です。空のリストのときは空文字 "" を返します。番号は数値なので、str で文字列に変えてからつなぎます。

要件

  1. 関数名は numbered_list で、引数はリスト names の1つだけにする
  2. enumerate を使い、番号は 1 から始める
  3. 各行は "1. りんご" のように番号、半角ドット、半角スペース1つ、品名の順にする
  4. 行の区切りは \n を使い、末尾には改行を付けない

入出力例

numbered_list(["りんご","みかん","パン"]) → "1. りんご 2. みかん 3. パン" numbered_list(["りんご","みかん"]) → "1. りんご 2. みかん" numbered_list(["りんご"]) → "1. りんご" numbered_list(["りんご","みかん","パン","牛乳","たまご"]) → "1. りんご 2. みかん 3. パン 4. 牛乳 5. たまご" numbered_list([]) → ""

ヒント

enumerate(names, 1) と書くと番号が 1 から始まります

for i, name in ... のように、名前を2つカンマで並べて受け取ります

数値の番号は str(i) で文字列に変えてからつなぎます

改行を行のうしろではなく手前に足すと、末尾に余分な改行が残りません

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/08/05·更新 2026/08/26

関連レッスン

  • zipで組み合わせ

    zip で品名リストと金額リストを組にし、レシート行に整える pair_lines を作る

  • 入れ子ループ

    ループの中にループを書いて九九の表を組み立てる multiplication_table を作る

  • つくる:何件でも記録

    第5章の総仕上げ。記録の集まりから番号付き一覧と合計を返す show_all を作る

  • 第5章クイズ

    for と while、range の刻み幅、break と continue の違い、enumerate と zip を5問で確認する

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • 変数データに名前をつけて参照する仕組み
  • ループ繰り返し処理。矢印で戻すか専用記号で示す
  • リスト順序付きで複数の値を扱うデータ構造
  • 引数位置引数=順番で渡す。
  • 戻り値呼び出し元への返答を表す点線矢印
  • テストバグを見つける工程
  • 関数処理に名前を付けて再利用できる単位
main.py
学習モード
エディタを読み込んでいます

メモ

enumerateで番号付け

⌘S で保存