2017-09-27 1 views
0

私はスケジュール通りにalittleの周りを遊んでいて、私はSchedule githubがスケジュールを持っていて、本当に素敵で使いやすいことが分かった。それでは、私がこれまで行っていることである。Python - フォーマット/トリムなので適切な時間が得られますか?

UserInput = input('To run Schedule script - Press y\nTo run directly - Press n\n') 

if(UserInput == 'n'): 
    main() 
elif(UserInput == 'y'): 
    TimeUser = input('What time to start script? Format - HH:MM ') 
    schedule.every().day.at(TimeUser).do(main) 
    wipe() 
    print('Schedule starts at: ' + TimeUser + ' - Waiting for time...') 

    while True: 
     schedule.run_pending() 
     time.sleep(1) 
     if(schedule.idle_seconds() == '5'): 
       print('Program starts in...:\n' + str(schedule.idle_seconds()) + '\n') 

は、しかし何イムは、今の問題のために得ることが私の出力は

であることが判明したということであるプログラムは、後に始まります...: 30.08442

Program starts in...: 
29.083967 

Program starts in...: 
28.083956 

Program starts in...: 
27.083923 

と基本的には、if(schedule.idle_seconds()): 5秒です。だから5秒後に印刷が始まるはずです。しかし、私が考えているミリ秒のために5秒に達することはないということです。だから多分それをトリミング/カット/フォーマットする方法があるのだろうかと思うので、5秒後に印刷が始まるでしょうか?

EDIT OUTPUTT:int(variable)いますが、トリムせずにそれを行うことができます。

-------------------------------------- 
Schedule starts at: 13:55 - Waiting for time... 
-------------------------------------- 
Program starts in...: 
4.748427 

-------------------------------------- 
Wrong input - Try again 
-------------------------------------- 
To run Schedule task - Press y 
To run directly - Press n 

答えて

1

ので、フロートをトリミングする最も簡単な方法です。あなたの条件の代わりにif(schedule.idle_seconds() < 5.0):を試してみてください。しかし、決して終わりはありません。ループの動作を停止したい場合は、追加条件を作成する必要があります。

例えば:

while True: 
    schedule.run_pending() 
    time.sleep(1) 
    idle = schedule.idle_seconds() 
    if(idle < 5.0) and (idle >= 0.0): 
     print('Program starts in...:\n' + str(schedule.idle_seconds()) + '\n') 
+0

私はイムは奇妙なを取得して考える しかし、あなたはおそらくの線に沿って何かを行うことができますバグまでしかし、私はこれを実行しようとすると、プログラムが始まると言っています.... ....しかし、私の入力が間違っていることを私に伝えます..それは異常です.. Imは私のスレッドを編集して出力を知らせます – WeInThis

+0

まあ...今それがダウン-0に行く... '' ' プログラムで起動...: 2.733921 プログラムで起動...: 1.733449 プログラムで起動...: 0.732948 プログラムの中で始まり...: -0.267551 -------------------------------------- 入力が間違っています - もう一度お試しください。 -------------------------------------- スケジュールタスクを実行するには - を直接実行するには - nを押します。 '' ' – WeInThis

+0

'休憩'の代わりにmain()を使うことができます。右? – WeInThis

1

関数は浮動小数点数を返すので、それを文字列に比較しても機能することはありません。

idle = int(round(schedule.idle_seconds())) 
if idle == 5: 
    print('Program starts in...:\n' + str(idle) + '\n') 

あなたが安全側になりたい場合は、あなたの代わりに丸いのも床ができます::

idle = int(schedule.idle_seconds()) 
+0

これは動作しませんでした。私が '' 'に変更しようとしたときに、実にうまくいきました。 idle = int(round(schedule。真一方idle_seconds())) : プリント(アイドル) schedule.run_pending() time.sleep(1) idletwo = INT(schedule.idle_seconds()) (アイドル== '5' であれば)。 print( "Test:" + str(idle)+ '\ n') '' ' ちょうど同じ秒で止まっていました。それで36秒が残っていたら。それはただ印刷された36 36 36 36 36 – WeInThis

+0

もし '' idle == 5''が '' idle == '5''と等しくなければ、あなたの問題がどうにか解決されたので、私はこれに入る必要はないと思います-depth。 :) – Uvar

+0

私はそうは思わない!こちらこそ、ありがとう。あなたの "ラウンド"がなければ、私はそれを持っていないでしょう! – WeInThis

関連する問題