Python Строковая проблема с картой и лямбда-функцией - PullRequest
0 голосов
/ 09 января 2020

Я написал функцию python, которая должна принимать строку и возвращает ту же строку со всеми четными индексированными символами в каждом слове в верхнем регистре и всеми нечетными индексированными символами в каждом слове в нижнем регистре.
Например: to_weird_case ('Weird string case') # => возвращает 'WeIrD StRiNg CaSe'

def to_weird_case(string):
    s = list(string.split(" "))
    words = []
    for word in s:
        w = map(lambda x: x.upper() if word.index(x)%2 == 0 else x.lower(), word)
        w = "".join(list(w))
        words.append(w)

    #print(words)
    return " ".join(words)

Теперь к моей проблеме: как только будет передано более одного слова, последние буквы последнее слово все преобразуются в верхний регистр, и я не понимаю, почему ...
Например: to_weird_case ('Это тест') возвращает This Is A TeSTII

Спасибо за помощь

1 Ответ

2 голосов
/ 09 января 2020

Это потому, что функция index() возвращает индекс первого экземпляра этого символа в строке. Вы хотите написать свой l oop, используя перечисление:

for index, word in enumerate(s):

При этом вместо использования функции индекса вы можете написать свою логику c на основе index переменная передана из enumerate().

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