コース一覧
    Pythonループ・関数
    rangeとstep

    Pythonループ・関数

    ループと関数の基本を学び、繰り返し処理を分割して読みやすく書けるようにします。

    1
    ループ
    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分
    2
    関数
    01. 関数を定義する15分
    02. 引数と戻り値15分
    03. デフォルト引数15分
    04. キーワード引数15分
    05. 複数の戻り値15分
    06. divmod15分
    07. 変数のスコープ15分
    08. lambda関数15分
    09. つくる:関数に分割15分
    10. 第6章クイズ10分

    rangeとstep

    for ループと range

    回したい数が、まだリストになっていない

    前のレッスンでは、すでに用意されたリストを for で回しました。では「1 から 7 まで」のような連番を回したいときはどうするか。手で並べて書くのは、1 から 31 まででも面倒です。

    数の並びをその場で作ってくれるのが range です。渡す引数の数で意味が変わります。

    Python

    for n in range(3):
        print(n)
    
    for n in range(1, 8):
        print(n)
    
    for n in range(1, 8, 2):
        print(n)

    1 つなら 0 から始まり、その数の手前までなので 0 1 2 が出ます。

    2 つなら始まりと終わりで、1 から 7 までが出ます。3 つ目まで書くと、それが 刻み幅 です。1 3 5 7 と 1 つ飛ばしで進みます。刻み幅を 3 にすれば 1 4 7 です。

    終わりに書いた値は出ない

    3 つの書き方に共通しているのは、終わりに書いた値が含まれない ことです。range(1, 8) の 8 は出ません。1 から 7 までが欲しければ、終わりには 1 つ多い数を書きます。

    これは Python 全体で一貫している決まりで、慣れるまでは「終わりは手前まで」と声に出して確認します。最終日だけ出てこない、という間違いはここから来ます。

    始まりと終わりが同じ range(1, 1) は、1 つも数を出しません。for の中身は 1 度も動かないので、入れ物は用意したときの値のまま残ります。なお刻み幅に 0 を渡すといつまでも進まないため、ValueError になります。

    数と文字はそのままつなげない

    range から出てくるのは数値です。日本語の見出しに混ぜるには、文字列に変えてからつなぎます。

    Python

    n = 3
    print(str(n) + "回目")
    print(f"{n}回目")

    どちらも 3回目 になります。str を挟まずに n + "回目" と書くと TypeError です。第 2 章でやった型変換が、ここで効いてきます。

    解説

    数値と文字列の連結は、Python を書き始めた最初の 1 か月でいちばん多く出会うエラーです。TypeError を見たら、まず str の付け忘れを疑います。

    やってみよう

    関数 day_labels(last_day, step) を実装してください。引数は 2 つで、last_day は最終日 (int)、step は刻み幅 (int) です。

    1 から last_day まで step ごとに進みながら、"1日目" のような文字列を並べたリストを return します。day_labels(7, 2) なら ["1日目", "3日目", "5日目", "7日目"] です。

    last_day が 0 のときは、1 つも作れないので空のリスト [] を返します。range の終わりが含まれないことに気をつけてください。

    要件

    1. 関数名は day_labels で、引数は last_day と step の2つにする
    2. range の3つ目の引数に step を渡して刻み幅を指定する
    3. 1 から last_day まで含める。終わりの値が含まれないことに注意する
    4. 各要素は "1日目" のように数値のうしろに日目を付けた文字列にする

    ヒント

    range(1, last_day + 1, step) で 1 から last_day までを step ごとに回せます

    数値と文字列はそのままつなげません。str(day) + "日目" とします

    f-string を使って f"{day}日目" と書いても同じ結果になります

    last_day が 0 のときは range(1, 1, step) になり、1周も回りません

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

    関連レッスン

    • breakとcontinue

      0円は continue で飛ばし、-1 は break で打ち切る total_skip_zero を作る

    • enumerateで番号付け

      enumerate で品名リストに1から始まる通し番号を振る numbered_list を作る

    • zipで組み合わせ

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

    • 入れ子ループ

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

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

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

    • リスト順序付きで複数の値を扱うデータ構造
    • 引数位置引数=順番で渡す。
    • 型変換あるデータ型を別の型に変換すること。
    • 関数処理に名前を付けて再利用できる単位
    main.py
    エディタを読み込んでいます

    メモ

    rangeとstep

    ⌘S で保存