標準ライブラリ探訪

このレッスンでできるようになること。randomstatistics を読み込んで、テスト用の支出データを自動で作り、その中身を検査できるようになります。

道具は探して見つける

標準ライブラリには200以上のモジュールがあり、全部を覚える必要はありません。大事なのは「やりたいことに合う道具がすでにあるかもしれない」と疑って探す習慣です。今回はその練習として2つ触ります。

  • random はランダムな値を作るモジュールです。random.randint(a, b) は a 以上 b 以下の整数を1つ返します
  • statistics は平均や中央値を出すモジュールです。statistics.mean(xs) が平均、statistics.median(xs) が中央値です
import random import statistics amounts = [random.randint(100, 5000) for _ in range(5)] print(len(amounts)) print(statistics.mean(amounts))

ランダムな値は検査の仕方が変わる

家計簿の集計処理を試すには、それらしいデータが何十件も要ります。手で書くのは大変なので random で作ります。ただしランダムな値は実行するたびに変わるため、値そのものを正解と比べることができません。

そこで、値ではなく性質を確かめます。件数がちょうど指定どおりか、すべての金額が指定した範囲に収まっているか、平均がその範囲の中にあるか。こうした真偽の判定なら、何度実行しても同じ答えになります。ランダムを扱うコードのテストは、この「性質で確かめる」やり方が基本になります。

all で全件をまとめて調べる

all(条件 for x in xs) は、すべての要素が条件を満たすとき True を返します。1件でも外れていれば False です。全件チェックを1行で書ける便利な書き方で、第4章でもう一度詳しく扱います。

要件

  1. random.randint(100, 5000) で金額をつくること
  2. statistics.mean で平均を求めること
  3. 戻り値は [件数, 全件が100以上5000以下か, 平均が100以上5000以下か] の3要素リストにすること

入出力例

generate_check(10)[10,true,true] generate_check(3)[3,true,true] generate_check(50)[50,true,true]

ヒント

生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア
編集 LuaGate編集部
main.py
学習モード

メモ

標準ライブラリ探訪

⌘S で保存