Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ range関数 | セクション
データ分析のためのPython基礎
セクション 1.  27
single

single

bookrange関数

メニューを表示するにはスワイプしてください

Pythonのrange()関数は、数値のシーケンスを生成する組み込み関数。

特定の回数だけループを実行する必要がある場合など、シーケンスをループ処理する際によく使用。

予測可能な繰り返しパターンを伴うタスク(例:棚の補充やスーパーマーケットでの販売スケジュール管理)に最適。

スーパーマーケットのシナリオで、Alexがrange()関数を使って日常業務を効率的に管理する方法を見てみましょう。

構文と引数

range()関数は最大3つの引数を取ることができ、さまざまなループ処理に対応可能。

range関数の一般的な構文:

range(start, stop, step)
  • start: シーケンスの最初の数値。省略可能で、指定しない場合は0から開始。
  • stop: シーケンスの最後の数値だが、この数値の直前で終了。この引数は必須。
  • step: シーケンス内の各数値の間で加算(または減算)する値。省略可能で、指定しない場合は1ずつ増加。

range()関数の構文を理解したところで、各引数(startstopstep)がループの動作にどのように影響するか、いくつかの例で確認しましょう。

引数が1つの場合

range()関数に1つだけ引数を与えると、それはstopパラメータとして扱われる。

この例では、0から6までの7要素のシーケンスを生成。ループはこれらの要素を順に処理し、店舗が営業している最初の7日間を表現。

123
# Announce store opening every day for 7 days for day in range(7): print(f"Good morning! The store is now open on day {day}.")
copy
Note
注意

シーケンスは0から始まり、6で終わります。これはPythonが多くの場合0からカウントを開始するためであり、多くの場面でインデックス調整の必要性を減らします

2つの引数

25start)と32stop)のように2つの引数を指定すると、range()25から31までのシーケンスを生成します(stopの値はシーケンスに含まれません)。

123
# Planning seasonal sale days in the last week of December for day in range(25, 32): print(f"Seasonal sale on December {day}.")
copy
Note
ノート

このインデックス方法では、終了要素が除外されるため、start引数からstop引数を引くことでシーケンス内の要素数を簡単に計算できます。例えば、32 - 25 = 7となり、シーケンスには7つの要素が含まれます。

3つの引数

range()に3番目の引数を追加すると、step値が導入され、シーケンス内の各数値の間隔を定義します。

この例では、range()1start)、13stop)、3step)を受け取り、1, 4, 7, 10という数値を生成します。これらは12時間勤務のスタッフシフトの開始時刻を表すことができます。

123
# Schedule staff shifts every three hours throughout a 12-hour day for hour in range(1, 13, 3): print(f"Staff shift starts at hour {hour}.")
copy

応用例

range() 関数を使用して、週の各日にタスクをスケジュールし、店舗のすべてのセクションがカバーされるように設定。

このループは 7回 実行される。range(7)0 から 6 までの数字(合計 7 要素)を生成。各ループで変数 day0 から 6 までの値を取り、その値を使って weekly_tasksweekdays リストの要素にアクセス。

123456789101112131415161718192021
# List of daily tasks for a week weekly_tasks = [ "Restock Fruits", "Clean Dairy Section", "Review Meat Inventory", "Restock Vegetables", "Check Bakery Expiry Dates", "Organize Front Displays", "Prepare Weekly Sales Report" ] # List of weekdays corresponding to each task weekdays = [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ] # Loop through each day using the range function for day in range(7): task = weekly_tasks[day] # Access the task corresponding to the current day weekday = weekdays[day] # Access the corresponding weekday print(f"{weekday} Task: {task}")
copy
タスク

スワイプしてコーディングを開始

2つのリストweekdaysdaily_promotions — を使用して、各曜日に割り当てられたプロモーションを出力。

  • for 関数を使った range() ループでリストのインデックスを反復処理。
  • 各イテレーションで:
    • weekdays リストから現在の weekday を取得。
    • 同じインデックスを使って daily_promotions から対応するプロモーションを取得。
  • 指定された形式で両方の値を出力。

出力要件

  • 各曜日ごとに次の形式で出力:
    <weekday>: Promotion on <promotion>

解答

Note
注意

インデックスエラーを防ぐため、両方のリストが同じ数の要素を持っていることを確認。

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  27
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt