blunder-ful Ответов: 2

Мне нужно решить этот вопрос (ниже), но поскольку я пишу его функцию, она не работает. Я не могу понять почему.


Returns a string that has all the characters that are in word, in the same order, except for the ones that are in char_list.


Что я уже пробовал:

def remove_chars(word, char_list):
    # returns str with characters in same order as in word
    # except the ones in char_list
    
    for char in word:
        if char in char_list:
            char = 'extra'
            word= word.replace(char, '')
            
        else:
            char = char
           
    return word

Patrice T

Показать пример ввода с фактическим выходом и ожидаемым выходом

2 Ответов

Рейтинг:
6

Patrice T

Цитата:
когда я пишу его функцию, он не работает. Я не могу понять почему.

Я бы начал с упрощения кода до:
def remove_chars(word, char_list):
    # returns str with characters in same order as in word
    # except the ones in char_list
    
    for char in word:
        if char in char_list:
            char = 'extra'
            word= word.replace(char, '')
            
        else:
            char = char
           
    return word

Затем я бы перевернул петлю, чтобы:
def remove_chars(word, char_list):
    # returns str with characters in same order as in word
    # except the ones in char_list
    
    for char in char_list:
        word= word.replace(char, '')
    return word

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


Рейтинг:
14

Richard MacCutchan

Для чего это должно быть нужно: char = 'extra'?
Все, что вам нужно, это

def remove_chars(word, char_list):
    # returns str with characters in same order as in word
    # except the ones in char_list
    
    for char in word:
        if char in char_list:
            word= word.replace(char, '')
           
    return word