1. 1日ごとに7日分を作る
  2. 1つ飛ばしで作る
  3. 3日ごとに作る
  4. 最終日が1なら1件だけ
  5. 最終日が0なら空のリスト
コース一覧
Python入門:基礎文法編
rangeとstep

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分

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日目" のように数値のうしろに日目を付けた文字列にする

入出力例

day_labels(7, 1) → ["1日目","2日目","3日目","4日目","5日目","6日目","7日目"] day_labels(7, 2) → ["1日目","3日目","5日目","7日目"] day_labels(7, 3) → ["1日目","4日目","7日目"] day_labels(1, 1) → ["1日目"] day_labels(0, 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 で保存