2013-05-28 1 views
0

저는 방금 직업을 가진 동생을위한 기본 임금 타이머를 만들고 싶습니다 ... 누군가가 기다리고있는 코드를 실행하면서 while 루프를 사용하고 싶었습니다. (또는 다른 어떤 키) 루프를 끝내고 현재 임금을줍니다. KeyboardInterrupt에 기대했지만, 쉬운 방법이 있다면 그것에 대해 듣고 싶습니다. 내가 어떻게 할 수 있니?당신은 try 문장없이 KeyboardInterrupt를 어떻게 사용합니까

+0

'try-except' 문을 사용하고'KeyboardInterrupt'를 잡아 내지 않는 유효한 이유가 있습니까? –

+0

스크립트에서'input()'함수 호출로 키보드 입력을 기다린 후 경과 시간과 임금을받는 즉시 계산할 수 있습니다. – martineau

+0

아니요, try-except를 사용하고 싶지 않은 이유는 없습니다. 나는 결코 시도를 사용하지 않았다. 그 전에 왜 내가 그것에서 벗어나려고 노력 했는가. – user2429378

답변

0

키보드 인터럽트는 누군가 Ctrl-C 또는 그와 유사한 명령을 누를 때만 생성됩니다.

from time import sleep 

wage = 0 
try: 
    while True: 
     wage = wage + hourly_rate 
     sleep(60 * 60) # an hour in seconds 
except KeyboardInterrupt: 
    print('you earned', wage) 

다음 누군가가 CTRL-C에 충돌이 : 당신의 계획 같은 코드 뭔가를하는 것처럼

는 소리? try/except와 함께 작동합니다. 당신이 누군가가 그냥 물건을 추가하는 대신 다음 리턴 키를 누르면 약간의 수학을 수행하려는 경우 만 : 그것은 시작에 각 시간을 추가로

from time import time 

start = time() # time in seconds from some arbitrary date in 1970 (it's a standard) 
input('hit return to get your wage!') 
end = time() 
elapsed = end - start # time that has passed in seconds between start and end 
wage = hourly_rate * elapsed/(60 * 60) # convert from hourly 
print('you earned', wage) 

첫 번째 버전은 조금 낙관적이다. 두 번째가 더 정확합니다.

ps 동생에게 축하드립니다!

+0

정말 너무 프로그래밍에 익숙하지 않아서 고맙습니다 ... 책에서 가르치려고 노력하고 있지만 실제로 스택 오버플로를 사용하는 것이 실용적인 것은 아닙니다. 대단히 감사합니다! – user2429378

+0

@ user2429378 - 문제 없음 - 원하는 답변을 올바르게 표시 할 수 있습니다 (틱 마크 클릭). 그러면 인터넷 포인트를 얻을 수 있습니다! –

+0

Niether 메서드가 이상하게 작동합니다 ... 파이썬 3.3 이상을 사용하고 있습니까? – user2429378