経緯
pythonで例えば、「16時に指定したら、プログラムが進む」というのを作りたくて、
今回勉強しました。
while と if を使ってやる
始めにプログラムを書きます。「16時にタイムをセットして、その時間になったら、プログラムが進む」いうプログラムです。
import datetime import time set_time = "16:00:00" dt = datetime.datetime.now() time1 = dt.strftime("%H:%M:%S") print(time1) while time1 <= set_time: if time1 == set_time: print(time1) print("成功") break dt = datetime.datetime.now() time1 = dt.strftime("%H:%M:%S") print(time1) print("失敗") time.sleep(1)
プログラムを説明します。空白の行はカウントしてません。
1,2行目、importしてます。
3行目、set_timeという変数にプログラムを動かしたい時間を入れます。
4行目、dtという変数に今の時間を入れます。
5行目、4行目の値だと扱えないので、strftimeを使って扱える値に変換して、time1という変数に入れます。
6行目、いったん表示させて確認してます。
7行目、while文です。time1 とset_timeの値が同じになるまでいう意味です。
8行目、if文です。time1がset_timeと同じになったら、9行目に移り。
time1がset_timeより前の時間だったら、12行目に移ります。
9行目、時間を確認しています。
10行目、成功したと言っています。*このあたりのprint文は適当です。
11行目、breakでループを抜け出しています。
12行目、dtという変数に今の時間を入れます。
13行目、12行目の値だと扱えないので、strftimeを使って扱える値に変換して、time1という変数に入れます。
14行目、時間が更新されているか、time1の値を確認しています。
15行目、失敗だと言っています。*これも適当です。
16行目、sleepを使って1秒待っています。1秒おきにループが処理される仕組みです。
ここがないと、ものすごいスピードでループが実行されるので、PCに負荷がかかります。
こんな感じでできました。
私はきちんと時間が設定されているのか、きちんと動いているのか、気になったのでprint()を多用しています。べつになくても動きますよ。
参考になれば、幸いです。
schedule()ではできなかった…
while と if文を使う前にschedule()という関数を使おうとしたのですが、定期実行のことばかりで、
「何時になったら…」というプログラムは私にはできませんでした。
ここまで読んでいただきありがとうございました。