2012-05-08 10 views
0

спасибо, что нашли время, чтобы помочь мне. Я изучал Python 3.2 в прошлом семестре, поэтому мои знания не больше, чем новичок. Я нахожусь в Windows 7, используя Python 3.2 и используя IDLE Python.Python 3.2 for-loop

Я использую цикл 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

Кроме того, это не то, о чем попросил ОП. Печатайте строку по одной букве за раз, если пользователь нажимает 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 подробно описывает ряд методов этого, и в нем есть пример одного в его ответе. Это лишь частичное решение, хотя и для этого типа я бы предпочел использовать проклятия (см. Ссылку).

Если это не то, о чем вы просите, я думаю, вам нужно переформулировать свой вопрос.

Смежные вопросы