Python простая функция loop_.join - PullRequest
0 голосов
/ 04 сентября 2018

Я ученик-любитель и хотел бы получить больше идей по этому поводу.

Это то, что я хочу,

paper_doll ('Hello') -> 'HHHeeellllllooo'

Вот мой код, и он не работает, но я понятия не имею, почему.

def paper_doll(text):
for i in range(0,len(text)-1):
    return ''.join(text[i]*3)
paper_doll('Hello')

Результат стал 'ЧЧХ'.

Понял следующее будет работать, def paper_doll (text): результат = '' для символа в тексте: результат + = символ * 3 возвращаемый результат

Но почему .join не работает в этом случае?

Ответы [ 4 ]

0 голосов
/ 04 сентября 2018

Во-первых, ваш код не работает, поскольку оператор return выходит из функции в первом цикле итерации, поэтому он утраивает только первую букву, и это все:

def paper_doll(text):
    for i in range(0,len(text)-1): # on 1st iteration: i = 0
        return ''.join(text[i]*3)  # on 1st iteration: text[i] equals 'H' ==> 'HHH' is returned

Во-вторых, вот решение с использованием понимания, которое в вашем случае хорошо адаптировано для итерации по каждому символу строки:

def paper_doll(text):
    return ''.join(i*3 for i in text)

print(paper_doll('Hello'))   # HHHeeellllllooo
0 голосов
/ 04 сентября 2018
def paper_doll(text):
    ret=[]
    for i in text:
       ret.append(i*3)
    return ''.join(ret) 

Должно работать. Это возвращает каждую трехбуквенную итерацию, соединенную вместе.

0 голосов
/ 04 сентября 2018

Ваша первоначальная проблема была return в вашей итерации. Это короткое замыкание в остальной части цикла ... как отмечено в других ответах.

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

def paper_doll(text):
   return ''.join([char*3 for char in text])
0 голосов
/ 04 сентября 2018

Добавить к строке во время цикла, вернуть результат:

def paper_doll(text):
    s = ''
    for i in range(0,len(text)):
        s += ''.join(text[i]*3)
    return s

print(paper_doll('Hello'))

Выход:

HHHeeellllllooo

(я также удалил -1 в range, чтобы вы получили три "o")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...