2012-05-08 4 views
0

나를 도와 주셔서 감사합니다. 저는 지난 학기에 파이썬 3.2를 배웠습니다. 그래서 제 지식은 초보자 이상이 아닙니다. 필자는 Windows 7에서 Python 3.2를 사용하고 Python의 IDLE을 사용합니다.파이썬 3.2 for 루프

for 루프를 사용하여 일련의 문자열을 스크롤 방식으로 인쇄합니다. 내 말은 IDLE이 문자열을 문자로 인쇄한다는 것입니다. 아래는 내가 사용하고있는 코드입니다.

import os, sys, time 

message=('Enter string in here. It will print what is in here letter by letter.') 

for line in message: 
    print(line,end='') 
    sys.stdout.flush() 
    time.sleep(0.03) 

내 질문은 : 거기에 사용자가 문자열이 인쇄되는 시간 내내 언제든지 '입력'공격한다면 인쇄 할 전체 문자열 (메시지)를 가지고 할 수있는 방법입니다. 따라서 사용자가 처음에 '입력'을 누르더라도 전체 문자열이 인쇄됩니다.

다시 한번 나를 도와 주셔서 감사드립니다. 대단히 감사합니다.

답변

0
import time 
import sys 
message = 'Enter string in here. It will print what is in here letter by letter.' 

for i in range(len(message) + 1): 
    sys.stdout.write('\r{}'.format(message[:i])) 
    sys.stdout.flush() 
    time.sleep(0.03) 
+0

시간을내어 도와 주셔서 감사합니다. 그러나 이것은 나를 위해 작동하지 않았다. 'xrange'는 존재하지 않습니다. – dhc

+2

또한 OP가 요청한 내용이 아닙니다. 문자열을 한 번에 한 글자 씩 인쇄하십시오. 사용자가 Enter 키를 누르면 나머지 문자열이 즉시 인쇄됩니다. –

+0

감사합니다. jb. 코드는 너무 복잡해서 이해할 수 없었습니다. – dhc

0

회선이 회선에 대해 이야기하지만 회선에서는 작동하지 않으므로 코드가 약간 혼란 스럽습니다. 우리는 우리가 문자를받을 문자열을 반복하면

message=('Enter string in here. It will print what is in here letter by letter.') 

그래서 메시지는 문자열

for line in message: 

입니다. 매 루프마다 매번 line을 다음 문자로 설정합니다. 그런 이름을 짓는 변수는 자신을 포함 해 그것을 읽는 사람을 혼란스럽게 만듭니다.

문자열이 인쇄되는 동안 사용자가 언제든지 '입력'을 누르면 전체 문자열 (메시지)을 인쇄 할 수있는 방법이 있습니까? 따라서 사용자가 처음에 '입력'을 누르더라도 전체 문자열이 인쇄됩니다.

나는 당신이 다음 라인에 커서를 옮기려면 면역이 될 수 있는지 여부를 묻고 있다고 생각합니다. This question에는이를 수행하는 여러 가지 방법이 자세히 설명되어 있으며, wim은 그의 답변에서 하나의 예제를 갖고 있습니다. 그것은 단지 부분적인 해결책 일뿐입니다. 이런 유형의 경우 curses를 사용하는 것이 좋습니다 (링크 참조).

당신이 묻는 것이 아니라면, 질문을 다시해야 할 필요가 있다고 생각합니다.