タイマーを作ろう!!

以前作ったタイマーのプログラムは以下のようなコードでした。

>>> import datetime
>>> now = datetime.datetime.now()
>>> goal = now + datetime.timedelta(seconds = 10)
>>> target = datetime.datetime.now()
>>> while target != goal:
...      if target.hour == goal.hour and target.minute == goal.minute and target.second == goal.second:
...              print("Time is up!!")
...              break
...      print(goal - target)
...      target = datetime.datetime.now()

これを実行すると10秒タイマーとして機能しますが、逆に言えば10秒タイマーとしての機能しか持ちません。
もう少し自由度の高いタイマーが欲しくなったので、入力内容を読み取るinput()を用いて書き換えてみました。

セットしたい時・分・秒の入力を求めたいので、1行目の後に次のコードを追加しました。

    print("セットしたい時間を入力してね")
   h = int(input("時:"))
   m = int(input("分:"))
   s = int(input("秒:"))

これで変数h・m・sにそれぞれ時・分・秒の情報が格納されました。あとは目標時間(goal)をこれらの変数を含んだものにすればいいわけです。

>>> goal = now + datetime.timedelta(hours = h, minutes = m, seconds = s)

これらの変更を加えて前回同様関数化すると、以下のようなプログラムが完成します。

>>> def timer():
...     import datetime
...     print("セットしたい時間を入力してね")
...     h = int(input("時:"))
...     m = int(input("分:"))
...     s = int(input("秒:"))
...     now = datetime.datetime.now()
...     goal = now + datetime.timedelta(hours = h, minutes = m, seconds = s)
...     target = datetime.datetime.now()
...     while target != goal:
...          if target.hour == goal.hour and target.minute == goal.minute and target.second == goal.second:
...                 print("Time is up!!")
...                 break
...          print(goal - target)
...          target = datetime.datetime.now()

これでtimer()を呼び出すと…

>>> timer()
セットしたい時間を入力してね
時:0:0:10

このように順に入力を求められ(ここでは0,0,10と入力)、enterキーを押すとタイマーが開始されます。
.

この記事が気に入ったらサポートをしてみませんか?