Python
 Computer >> コンピューター >  >> プログラミング >> Python

【初心者向け】Pythonでラップタイマーを作成する方法を解説

Pythonを使ってストップウォッチのような「ラップタイマー」を作成するには、標準ライブラリの time モジュールが便利です。この記事では、Enterキーを押すたびにラップ時間を計測し、Ctrl+Cで計測を終了できるシンプルなラップタイマーの実装方法を、サンプルコードとともにわかりやすく解説します。

ラップタイマーの仕組み

基本的な仕組みは以下のとおりです。

  • あらかじめラップ数は固定せず、無限ループで計測を続ける
  • try-exceptブロックを使い、Ctrl+C(KeyboardInterrupt)で安全に終了する
  • 現在時刻と開始時刻・前回ラップ時刻の差分から、合計時間とラップ時間を算出する

サンプルコード

以下がラップタイマーの実装例です。

import time

start_time = time.time()
end_time = start_time
lap_num = 1

print("ENTERキーを押すとラップを計測します。")
print("CTRL+Cで終了します")

try:
    while True:

        input()
        time_laps = round((time.time() - end_time), 2)

        tot_time = round((time.time() - start_time), 2)

        print("Lap No. " + str(lap_num))
        print("Total Time: " + str(tot_time))
        print("Lap Time: " + str(time_laps))

        print("*" * 20)

        end_time = time.time()
        lap_num += 1

except KeyboardInterrupt:
    print("終了します!")

実行結果

実際にプログラムを実行すると、次のようにコンソールへ出力されます。

ENTERキーを押すとラップを計測します。
CTRL+Cで終了します

Lap No. 1
Total Time: 1.77
Lap Time: 1.77
********************

Lap No. 2
Total Time: 3.52
Lap Time: 1.75
********************
終了します!

コードの解説

各処理の流れを順番に見ていきましょう。

  • まず、時間計測に必要な time モジュールをインポートします。

  • 開始時刻(start_time)、直近のラップ時刻(end_time)、ラップ数(lap_num)を初期化して定義します。

  • ユーザーがEnterキーを押すと、input() が入力を受け取り、そのタイミングで計測が進みます。

  • tryブロック内では、現在時刻と end_time の差分を計算し、直前のラップからの経過時間(ラップタイム)を求めます。

  • 同様に、現在時刻と start_time の差分から、計測開始からの合計時間も算出しています。

  • これにより、現在のラップ数・合計時間・ラップタイムの3つの情報が得られます。

  • 得られた結果は、コンソールに出力され、区切り線として「*」が20個表示されます。

  • 最後に end_time を現在時刻で更新し、ラップ数を1つ増やして次の計測に備えます。

  • Ctrl+Cが押されると KeyboardInterrupt 例外が発生し、exceptブロック内の「終了します!」というメッセージが表示されてプログラムが終了します。

ポイントまとめ

time.time() は1970年1月1日からの経過秒数を返す関数で、2つの時点の差分を取ることで簡単に経過時間を測定できます。round() 関数で小数第2位に丸めることで、見やすい表示になります。また、無限ループとtry-exceptを組み合わせることで、ユーザーの任意のタイミングで安全に終了できる点がこのプログラムのポイントです。ストップウォッチアプリや作業時間の計測ツールなど、さまざまな場面に応用できますので、ぜひ試してみてください。

  1. Pythonでのベクトル化とは?NumPyによる高速な配列演算の基礎を解説

    本記事では、Python 3.xにおける「ベクトル化(Vectorization)」の概念と、その実装に用いられるさまざまなテクニックについて解説します。ループ処理を排除した効率的なコードの書き方を、具体例とともに見ていきましょう。 ベクトル化とは何か? ベクトル化とは、ループを使用せずに配列操作を実装するテクニックです。関数を活用することで、コードの実行時間や計算時間を大幅に短縮できます。 ベクトル化では、配列に対して個別に処理を行うのではなく、ベクトル全体に対して一括で演算を実行します。代表的な演算には以下のようなものがあります。 ドット積(内積・スカラー積):2つのベクトルから単一のス

  2. Pythonで作るWebサイトアラーム!指定時刻に自動でページを開く方法

    はじめに この記事では、Pythonを使って「Webサイトアラーム」を作成する方法を解説します。あらかじめURLと時刻を指定しておくと、システムの時刻がその瞬間に達したとき、自動的にブラウザで目的のWebページを開いてくれるシンプルな仕組みです。 課題の概要 WebサイトのURLと時刻を入力として受け取り、システム時刻が指定時刻に達したタイミングで、ブラウザ上に該当するWebページを表示します。 ブックマークには日々利用するさまざまなWebページを保存できますが、「毎日決まった時刻に特定のページを開いて作業したい」という場面は少なくありません。たとえば、朝会の資料ページや業務システムへのログ