Печать результатов в обратном порядке из raw_input в python - PullRequest
0 голосов
/ 27 сентября 2010

При использовании raw_input в цикле, до тех пор, пока не будет набран определенный символ (скажем, 'a'), как я могу напечатать все входные данные до этого, в обратном порядке, без сохранения входных данных в структуре данных?

Использовать строку просто:

def foo():

    x = raw_input("Enter character: ")
    string = ""
    while not (str(x) == "a"):
        string = str(x) + "\n" + string
        x = raw_input("Enter character: ")
    print string.strip()

но как я могу сделать то же самое без строки?

Ответы [ 2 ]

5 голосов
/ 28 сентября 2010

Это не практический подход, но так как вы просили его:

def getchar():
    char = raw_input("Enter character: ")
    if char != 'a':
        getchar()
        print char

getchar()

Конечно, это только означает, что я использую «скрытые» структуры данных, локальное пространство имен и стек вызовов.

2 голосов
/ 28 сентября 2010

Вы должны сохранить результаты в некоторой структуре данных. Однако вместо строки вы можете сохранить каждый вход в списке и избежать всей конкатенации строк:

l = []
x = raw_input("Enter character: ")
while not (str(x) == 'a'):
    l.append(x)
    x = raw_input("Enter character: ")

print '\n'.join(l[::-1])
...