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

def removeChar(initials, string):
    initials = initials
    string = string
    for char in initials:
        modified = string.replace(char, "")
    print modified
    return modified



def getInitials(name, string):
    initials = ""
    for i in name.lower().split():
        initials += i[0]
    print initials
    removeChar(initials, string)



def main():
    name = raw_input("What is your name? \n")
    string = raw_input("What string would you like to remove your initials from? \n")
    getInitials(name, string)

Это выход:

What is your name? 
John Doe
What string would you like to remove your initials from? 
Arjajbian Ndigdhts

Arjajbian Nights

Почему бы не удалить первый инициал?

1
Esh Chhura 10 Янв 2017 в 00:39

3 ответа

Лучший ответ

Ваша проблема лежит здесь:

modified = string.replace(char, "")

Вы всегда используете replace в исходной строке, поэтому он удаляет каждый отдельный символ из исходной строки и возвращает новый. Просто используйте string = string.replace(char, "")

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

6
juanpa.arrivillaga 9 Янв 2017 в 21:44

Вам не нужно

 initials = initials
    string = string

Так как это ничего не говорит о том, чтобы сделать эту переменную такой же, как она уже есть. Я думаю, что это

modified = string.replace(char, "")

Вы делаете это, создавая переменную с именем modified, но позже в коде, который вы говорите, получите String, а не modified либо измените String to modified отдельно от top def, либо измените modified to string, и тогда он будет работать с надеждой

0
Catmantj 9 Янв 2017 в 21:55

Хотя @ juanpa.arrivillaga указала на вашу проблему, существует гораздо более питонский способ удаления символов j и d из входной строки; Использование выражения генератора :

>>> input_str = "Arjajbian Ndigdhts"
>>> ''.join(c for c in input_str if c.lower() not in 'jd')
'Arabian Nights'
>>> 

Это работает путем итерации input_str и передачи только тех символов ''.join(), которые не j или d.

0
Christian Dean 9 Янв 2017 в 22:10