2017-09-27 5 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 초 남았을 때 인쇄를 시작합니다 궁금해?

편집 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

내가 메신저 이상한 점점 생각 그러나, 당신은 아마의 라인을 따라 뭔가를 할 수 벌레. 그러나이 프로그램을 실행하려고하면 프로그램이 시작된다고합니다 : ....하지만 그 후에 내 입력이 잘못되었다고 알려줍니다. 그게 이상합니다 .. 출력을 알 수 있도록 내 스레드를 편집 중입니다 – WeInThis

+0

글쎄 ... 지금 그것은 ''' 프로그램에 ... 시작 ... 아래 -0에 간다 : 2.733921 ​​ 프로그램에서 시작 ... : 프로그램에서 시작 0.732948 :에 ... 1.733449 프로그램 시작 ... : -0.267551 -------------------------------------- 잘못된 입력 - 다시 시도하십시오. -------------------------------------- 예약 작업을 실행하려면 직접 실행하려면 - 누름 n ''' – WeInThis

+0

'중단'대신에 main()을 사용할 수 있다고 생각합니다. 권리? – WeInThis

1

기능은 그렇게 작동하지 않습니다 문자열과 비교, float를 반환합니다.

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

'if idle == 5'는'idle == '5''와 같지 않지만 문제가 해결되었으므로 다음과 같이 입력 할 필요가 없습니다. -깊이. :) – Uvar

+0

나는 그렇게 생각하지 않는다! 고맙습니다. 당신의 "라운드"가 없다면 나는 그것을 얻지 못할 것입니다! – WeInThis