2013-07-02 2 views
4

파이썬에서 캐리지 리턴을 사용하여 간단한 카운트 다운을 구현하는 데 문제가 있습니다. 나는 문제가있는 두 가지 버전이있다.파이썬 2.7 캐리지 리턴 카운트 다운

인쇄 버전 :

for i in range(10): 
    print "\rCountdown: %d" % i 
    time.sleep(1) 

문제 : 개행 문자가 마지막에 인쇄되어 있기 때문에 출력을 제공하므로 \r는, 아무것도하지 않습니다

Countdown: 0 
Countdown: 1 
Countdown: 2 
Countdown: 3 
Countdown: 4 
Countdown: 5 
Countdown: 6 
Countdown: 7 
Countdown: 8 
Countdown: 9 

하라 sys.stdout.write 버전 :

for i in range(10): 
    sys.stdout.write("\rCountdown: %d" % i) 
    time.sleep(1) 
print "\n" 

문제 : 모든 수면은 처음과 10 초 후에 발생합니다. 잠을 자면 화면에 Countdown: 9이 인쇄됩니다. 뒷장에서 \r이 작동하는 것을 볼 수는 있지만 인쇄물이 수면에 산재 해 있도록하려면 어떻게해야합니까?

답변

6

솔루션 번호 2의 경우 stdout을 플러시해야합니다.

for i in range(10): 
    sys.stdout.write("\rCountdown: %d" % i) 
    sys.stdout.flush() 
    time.sleep(1) 
print '' 

또한 인쇄가 줄 바꿈을 추가하기 때문에 빈 문자열을 인쇄하십시오. 또는 후행 쉼표가 일반적으로 추가되는 줄 바꿈을 억제하므로 더 읽기 쉽다고 생각하면 print '\n' ,을 사용하십시오.

하지만 첫 번째 문제를 해결하는 방법을 확실하지 ...

-1

또 다른 해결책은 :

for i in range(10): 
    print "Countdown: %d\r" % i, 
    time.sleep(1) 
+0

작동하지 않았다. 마지막 행만 인쇄합니다. – Krishh