Ошибка значения в коде латинской функции списка list.remove (x) x отсутствует в списке, когда x явно находится в списке - PullRequest
0 голосов
/ 05 октября 2019

Написание функции латыни, которая принимает текст и возвращает перевод латыни. Попытка удалить передние согласные, но получить ValueError, которой list.remove (x) x нет в списке. Печатные заявления показывают, что это не так.

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

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


def is_consonant(character):

    """takes a character and returns True if it is a consonant"""
    is_cons = False
    if character not in "aeiou":
        is_cons = True
    return is_cons

def to_piglatin(text):

    """takes a word and translates it into pig latin"""
    #convert input to list of lower case letters
    x = text.lower().split()
    print(x)
    if len(x) > 1:
        for word in x:
            front_cons = []
            word_as_list = [word]
            print("word_as_list =", word_as_list)
            for letter in word:
                if is_consonant(letter) == True:
                    print("letter =", letter)
                    front_cons.append(letter)
                    word_as_list.remove(letter)
                else:
                    break
            [word_as_list.append(front_cons[c]) for c in range(0, len(front_cons))]
            word_as_list.append("a")
            word_as_list.append("y")
            print(word_as_list)

test = "Hello there"

to_piglatin(test)

print error


Я ожидаю, что выходной результат будет ellohay erethay, но я получаю Value Error list.remove (x) x, которого нет в списке.

операторы печати показывают, что word_as_list = ['hello'] и letter = h, но word_as_list.remove (letter) возвращает ошибку ValueError

1 Ответ

0 голосов
/ 05 октября 2019

В вашем коде

word_as_list = [word]

составляет список длины 1 с элементом word = 'hello', а не списком символов. Вы должны изменить это на:

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