Python でカウントダウンタイマーを作成する

Rayven Esplanada 2022年4月12日
Python でカウントダウンタイマーを作成する

このチュートリアルでは、Python でカウントダウンタイマーを作成する方法を紹介します。

コードは、カウントダウンの長さの入力を受け入れ、入力が入力された直後にカウントダウンを開始します。

Python で time モジュールと sleep() 関数を使用してカウントダウンタイマーを作成する

time モジュールは、時間関連のユーティリティ関数と変数を含む一般的な Python モジュールです。このチュートリアルで使用される主な関数は、sleep() 関数です。これは、単一スレッドの実行を n 秒間中断する非同期関数です。

このチュートリアルの場合のように、プログラムがシングルスレッドの場合、sleep() 関数は、指定された経過時間に達するまでプログラム全体の実行を停止します。これにより、検証済みのユーザー入力とともに、Python で簡単なカウントダウンタイマーを作成できます。

最初に行うことは、sleep() 関数を使用するために time モジュールをインポートすることです。

import time

次に、カウントダウンタイマーとして機能する関数を宣言します。この関数を countdown() と呼びましょう。この関数は、タイマーがカウントダウンする秒数(num_of_secs)という単一のパラメーターを受け入れます。

num_of_secs 変数は、0 に達するまでループ内で継続的にデクリメントされます(これは False に変換され、追加の条件なしでループを終了します)。

ループ内で、入力変数 num_of_secsMM:SS 形式にフォーマットし、デクリメントするたびに出力します。これを行うには、組み込みの Python 関数 divmod() を使用します。この関数は、2つの数値を受け入れ、積と 2つの数値の余りをそれぞれ返します。次に、組み込みの文字列関数 format() を使用して、divmod() のタプル結果を MM:SS 形式にフォーマットします。

def countdown(num_of_secs):
    while num_of_secs:
        m, s = divmod(num_of_secs, 60)
        min_sec_format = "{:02d}:{:02d}".format(m, s)

{:02d} は、引数を 2 桁の整数にフォーマットします(記号 02d のため)。整数が 2 桁未満の場合、先頭に 0 が追加されます。

次に、ループの各反復で、time.sleep(1) を呼び出します。これは、各反復を 1 秒間遅延させ、経過後も継続することを意味します。

sleep() 関数を呼び出す前に、入力変数 num_of_secs の現在の値の MM:SS 形式に似た形式の文字列を出力します。

また、print() 関数内に、プロパティ end と値/r を使用して別の引数を追加します。これは、実際のタイマーの動作を模倣するための新しい行です。この引数は、ループが実行されるたびに前の print() 出力を上書きし、キャリッジリターンが記号/r で示される前にすべてを上書きします。

def countdown(num_of_secs):
    while num_of_secs:
        m, s = divmod(num_of_secs, 60)
        min_sec_format = "{:02d}:{:02d}".format(m, s)
        print(min_sec_format, end="/r")
        time.sleep(1)
        num_of_secs -= 1

    print("Countdown finished.")

その後、前のすべての行が実行された後、入力変数 min_sec_format を 1 デクリメントします。

最後に、タイマーの実行が完了したことを示す結論ステートメントをループの外側に出力します。countdown() メソッドを終了し、カウントダウンタイマーとして機能します。

次に行うことは、ユーザーがカウントダウンをトリガーする秒数を入力する方法を提供することです。このために、組み込みの input() 関数を使用してユーザー入力を受け入れることができます。

入力を変数にキャッチし、カウントダウン関数の引数として使用します。検証のために、入力変数を必ず int にキャストしてください。

inp = input("Input number of seconds to countdown: ")
countdown(int(inp))

コード全体は次のようになります。

import time


def countdown(num_of_secs):
    while num_of_secs:
        m, s = divmod(num_of_secs, 60)
        min_sec_format = "{:02d}:{:02d}".format(m, s)
        print(min_sec_format, end="/r")
        time.sleep(1)
        num_of_secs -= 1

    print("Countdown finished.")


inp = input("Input number of seconds to countdown: ")
countdown(inp)

出力:

Countdown finished.

最終出力には Countdown Finished が表示されますが、タイマーの動作を模倣し、00:00 に達するまで各 print() 行をクリアします。

したがって、5 秒を入力すると、スタックトレースは次のようになります。

00:05
00:04
00:03
00:02
00:01
Countdown finished.

そこにあります。これで、組み込み関数と time モジュールの sleep() 関数を使用して、Python で簡単なカウントダウンタイマーを正常に作成できました。

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

関連記事 - Python Timer