2016-06-04 2 views
3

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

Я хочу, чтобы цикл for создавал вывод с каждой другой буквой, имеющей перед ней пробел. Должно выглядеть примерно так:

>>>everyOther('banana') 
b 
a 
n 
a 
n 
a 

Я понимаю общую концепцию для петель и до сих пор я получаю, как:

def everyOther(word): 
    for each in word: 
     print each 

производит:

w 
o 
r 
d 

, но я не уверен, как выбрать, какие буквы будут иметь место перед ним.

Любая помощь или направления были бы очень полезными.^o^

+0

Вы пробовали индекс? – numeral

+1

Посмотрите enumerate() и разделите на 2 по модулю равным нулю, затем строка "" плюс новая строка – Merlin

ответ

1

Вы можете использовать enumerate(), чтобы возвращать индексный индекс для каждой буквы в строке вместе с самой буквой.

Затем вы можете проверить, делится ли число на 2, используя modulus operator (помните, что они начинаются с 0). Если он не делится на 2, сначала распечатайте пробел, чтобы получить желаемый результат.

def everyOther(word): 
    for index, letter in enumerate(word): 
     if index % 2 == 0: 
      print letter 
     else: 
      print " " + letter 

Вот пример:

In [7]: everyOther("bananas") 
b 
a 
n 
a 
n 
a 
s 
+0

/@ Удалит ваш ответ, я написал псевдокод OP, который узнал бы. – Merlin

+0

Почему? Я объяснил это и связал с документацией, чтобы OP мог учиться. Я не хочу играть в игры с людьми; некоторые лучше учатся на примере. – Will

+0

Ваш ответ означает, что OP не научится определять кодировку. – Merlin

0

Я хотел бы попробовать что-то вроде этого. Он проверяет индекс персонажа и ставит перед ним пробел, если он нечетный. В противном случае он просто печатает, как обычно.

def everyOther(word):  
    final="" 
    for i in word: 
     index=word.index(i) 
     if index%2!=0: 
      final+=i 
     else: 
      print i 
    print final 
0
is_odd = True 
for each in word: 
    if is_odd: print(' ',) #use print(' ', end="") in py 3.x 
    print(each) 
    is_odd = not is_odd 

использованием word.index(i) перебирает все по списку и замедляется. Итак, если есть n буквы в слове, есть итерации n**2. но этот подход требует только n итераций и, следовательно, быстрее.