2017-10-26 1 views
1

저는 파이썬 프로그래밍에 익숙하지 않고 최근에 배운 개념을 적용하려고합니다. 나는 다른 사람의 코드를 읽고 있는데, 예를 발견하고 아래에서 보듯이 약간 수정했다. 문제는 현재 시간이 깨우기 ​​시간과 같을 때 elif 블록이 실행되지 않는다는 것입니다. 내가 작은 if-else 성명에서, 그것은 잘 작동하지만 while loop 내부 트리거 결코 테스트했습니다.python-alarm clock suggestions

알려 주시기 바랍니다.

import time 

import subprocess 

wake_hour = int(raw_input("Wake hour: ")) 

wake_minute = int(raw_input("Wake minute: ")) 

wake_time = [wake_hour, wake_minute] 

current_hour = int(time.strftime("%H")) 

current_minute = int(time.strftime("%M")) 

current_time = [current_hour, current_minute] 

while True: 

    if current_time != wake_time: 
     current_hour = int(time.strftime("%H")) 
     current_minute = int(time.strftime("%M")) 
     print current_hour, current_minute 
     print wake_hour, wake_minute 

    elif current_time == wake_time: 
     audio_file = "/Users/dcasteli/Documents/emergency018.mp3" 
     play = subprocess.call(["afplay", audio_file]) 
     print "Wake up!" 
+0

어떤 샘플 입력을 사용 했습니까? 이 프로그램은 사용자가'current_time'과 일치 할 수있는 입력을 제공 할 때만 작동합니다. – jonathanking

+2

알람 시계를 구현할 때까지 [sleep] (https://docs.python.org/3.5/library/time.html#time.sleep)하시기 바랍니다. 항상 시계를 볼 필요가 없습니다. – moooeeeep

답변

3

에서만 current_hourcurrent_minute를 업데이트하지만 elif 문에 당신은 current_time == wake_time을 비교된다. current_time 값은 절대로 업데이트되지 않으며 사용자가 입력 한 값으로 영원히 남습니다. 첫 번째 if 문에서 current_time을 업데이트해야 조건부가 의미가 있습니다.

+0

예, 그게 전부입니다. 정말 고맙습니다 – user8838477