🫠

Pythonで勉強タイマーを作ってみた(初学者の試行錯誤ログ)

に公開

pythonを勉強し始めたので勉強タイマーを作成してみた。
以下がコードである。

import time

def countdown(minutes, label):
seconds = minutes * 60
print(f"{label}タイマー開始 : {minutes}分")
while seconds:
mins, secs = divmod(seconds, 60)
print(f"{label}残り: {int(mins):02d}:{int(secs):02d}")
time.sleep(1)
seconds -= 1
print(f"\n{label}終了!\n")

for cycle in range(1,3):
print(f"--- サイクル{cycle} ---")
countdown(1, "勉強")
countdown(0.05, "休憩")

print("全サイクル完了!お疲れ様!")

1,モジュール
 まず「import time」でタイムモジュールをインポートする。
 これによりpythonに時間の操作をさせることができる。

2,処理層
 countdownという関数を作成、引数にminutesとlabelを設定する。

seconds = minutes * 60
  分単位のものを秒単位に変換する

print(f"{label}タイマー開始 : {minutes}分")
    printのなかでfstringを使い、labelとminutesに
   入力された内容を表示させる。

while seconds:
  secondsが0秒になるまでwhile文で回す。

mins, secs = divmod(seconds, 60)
  divmod()でかっこ内のseconds,を60で割る。
 minsに割った結果の商が入り、secsに余りが入る。

print(f"{label}残り: {int(mins):02d}:{int(secs):02d}")
  int(mins):02d:int(secs):02dはminsとsecsを2桁で0埋めさせている。
 例えばminsが5の場合は05と表示される。dは整数を意味するdecimalであり
この名の通り整数でしか使用できないのでint()で囲っている。

time.sleep(1)
seconds -= 1
 time.sleep(1)は1秒待つ処理
seconds -= 1はsecondsに入っている数を1つずつ減らす処理

print(f"\n{label}終了!\n")
  secondsの数が0になるとwhile文を抜けて上記が出力される。

3,実行層
 for cycle in range(1,3):
 range(1,3)は実際1-2まで。3は含まない。cylcleに1,2の
 順番に代入され2回ループできるようにする。
print(f"--- サイクル{cycle} ---")
 サイクルの隣にcycleに代入された1,2が順番に出力される。
countdown(1, "勉強")
 countdown関数に1,勉強という引数が設定される
 この場合、minutesに1が入り、labelに勉強が入り
処理層が動く。
countdown(0.05, "休憩")
 一通り勉強の処理層が終了したら、次は休憩時間と休憩が
処理層に運ばれる。

Discussion