Я пытаюсь получить все остальные буквы из строки, но у меня возникли проблемы с печатью и возвратом. Почему, когда я использую print, вывод - это то, что я хочу, а когда я использую return, я получаю только первую букву?

string_bits(Hello)  # Return string made of every other char starting with the first

def string_bits(str):
    x = len(str)
    for i in range(0,x,2):
        print str[i]

output: H
        l
        o

Против

def string_bits(str):
    x = len(str)
    for i in range(0,x,2):
        return str[i]

output: H
-1
Asso 2 Мар 2018 в 15:11

4 ответа

Лучший ответ

Как уже отмечалось, ваша функция возвращает экземпляр в первом цикле. Вы можете использовать временную переменную для хранения вашего результата и возврата этого результата.

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

return ''.join([ur_string[i] for i in range(0, len(ur_string), 2)])
1
bofredo 2 Мар 2018 в 12:35

Это потому, что когда вы return, программа выходит из функции, тогда как при использовании print программа продолжает цикл.

Поскольку строки повторяемы, вы можете использовать нарезку, чтобы получить нужные символы, указав шаг 2:

Чтобы вернуть строку:

def string_bits(s):
    return s[::2]

Чтобы вернуть список символов:

def string_bits(s):    
    return list(s[::2])

Кроме того, вы можете использовать yield создать генератор:

def string_bits(s):
    for char in s[::2]:
        yield char
0
Trelzevir 2 Мар 2018 в 12:50

Может быть, то, что вы хотите, это:

def string_bits(the_str):
    x = len(the_str)
    for i in range(0,x,2):
        yield the_str[i]

Или the_str[::2] принимает только even символ позиции

1
enneppi 2 Мар 2018 в 12:21

Функция 1

Здесь вы перебираете всю строку и печатаете каждую букву. Цикл завершается, когда больше нет букв, и функция завершается.

def string_bits(str):
    x = len(str)
    for i in range(0,x,2):
        print str[i]

Функция 2

def string_bits(str):
    x = len(str)
    for i in range(0,x,2):
        return str[i]

Здесь вы перебираете всю строку, но вместо печати str[i] вы ее возвращаете. return заставляет вашу функцию завершиться, поэтому цикл не переходит на другие буквы.

Надеюсь это поможет!

0
Colin Ricardo 2 Мар 2018 в 12:20