Python - Напишите функцию, которая принимает строку в качестве аргумента и отображает буквы назад, по одной на строку - PullRequest
1 голос
/ 10 октября 2010

Это упражнение из «Как думать, как ученый».Я изучаю Python / программирование, и я не уверен, как выполнить эту задачу.

Вот пример в книге, где отображаются буквы вперед, я не могу понять, как получить противоположный эффект.Должен использовать цикл while.

fruit = 'banana'
index = 0
while index > len(fruit):
        letter = fruit[index]
        print letter
        index = index + 1

Ответы [ 3 ]

4 голосов
/ 10 октября 2010

Ну, это в основном то же самое, но:

  1. Вы должны начинать с последней буквы вместо первой, поэтому вместо index = 0 вам понадобится index = len(fruit) - 1

  2. Вы должны уменьшить индекс вместо увеличения его в конце цикла while, поэтому index = index + 1 становится index = index - 1.

  3. Состояние цикла while другое;Вы хотите оставаться в цикле, пока index указывает на действительный индекс символа.Поскольку index начинается с len(fruit) - 1 и после каждой итерации он становится на единицу меньше, в конечном итоге он будет меньше нуля.Ноль по-прежнему является допустимым символьным индексом (он относится к первому символу строки), поэтому вы должны оставаться в цикле до тех пор, пока index >= 0 - это будет условие while.

Собираем все вместе:

fruit = 'banana'
index = len(fruit) - 1
while index >= 0:
    letter = fruit[index]
    print letter
    index = index - 1
2 голосов
/ 11 октября 2010

я думаю, что самый простой способ -

print ''.join(reversed('banana'))

или, если вам нужна одна буква в строке

print '\n'.join(reversed('banana'))

, я думаю, что это лучше, потому что объединение - это стандартный способ работы сструны, так что ...

1 голос
/ 10 октября 2010

Simplest as:

>>> def print_reversed(s):
...   for letter in reversed(s):
...     print letter,
... 
>>> print_reversed('banana')
a n a n a b
>>> 

Другим возможным решением может быть указание индекса в качестве последнего индекса строки.Затем вы будете читать строку буква за буквой в обратном направлении, каждый раз понижая значение индекса на 1.Тогда фрагмент кода, который вы показали, может стать следующим:

>>> def print_reversed2(s):
...   index = len(s) - 1
...   while index >= 0:
...     letter = fruit[index]
...     print letter
...     index = index - 1
... 
>>> print_reversed2('banana')
a
n
a
n
a
b
>>> 

Использование интерактивного интерпретатора (просто введите «python» в командной строке) может помочь вам поэкспериментировать с такими фрагментами кода.Как например:

>>> fruit = 'banana'
>>> len(fruit)
6
>>> len(fruit) - 1
5
>>> while index >= 0:
...   print "index at: " + str(index)
...   print "fruit[index] at: " + fruit[index]
...   index = index - 1
... 
index at: 5
fruit[index] at: a
index at: 4
fruit[index] at: n
index at: 3
fruit[index] at: a
index at: 2
fruit[index] at: n
index at: 1
fruit[index] at: a
index at: 0
fruit[index] at: b
>>> 
...