Я хочу сделать функцию, которая возвращает текст, который ввел пользователь, но без гласных, не имеет значения, был ли он написан прописными или строчными буквами.
Тогда в качестве дополнительного я хотел бы вложить его, но я думаю, что это проще.
Это мой код:
def invertirSinVocales():
vocales = ("a", "e", "i", "o", "u", "A", "E", "I", "O","U")
texto = (input("ingrese un texto: "))
while vocales in texto:
texto2= texto.replace(vocales,"")
return texto2
print(invertirSinVocales())
Проблема в том, что он говорит мне, что ожидает, что «гласные» будут строкой, а на самом деле это кортеж.
Здравствуйте, попробуйте это, чтобы увидеть, что вам нужно:
Еще пара "хитрых" вариантов:
Использование
str.traslate
:str.maketrans
позволяет создать таблицу, которая будет использоваться для замены каждого символа на тот, который ему соответствует. Получите словарь, в котором есть парыclave: valor
:так как в данном случае мы хотим их устранить, достаточно, чтобы он имел вид:
что вы создаете
dict.fromkeys('aeiouAEIOUüáéíóúÜÁÉÍÓÚ')
. Со своей стороныstr.maketrans
, он возвращает аналогичный словарь, но преобразует ключи в числовые значения (кодовые точки юникода для каждого символа).str.translate
он просто перебирает строку и использует таблицу для замены каждого символа на тот, которому он принадлежит, возвращая новую строку по завершении.Использование регулярных выражений с
re.sub
:`Это не требует особых объяснений, он ищет в строке каждое совпадение с шаблоном и заменяет его вторым аргументом (в данном случае пустой строкой). Этот флаг
re.IGNORECASE
делает поиск совпадений с образцом нечувствительным к регистру.вы можете использовать «Понятия списка» следующим образом (обновлено с предложениями @FJsevilla):
Я надеюсь, что это поможет вам, и если у вас есть какие-либо вопросы, вы можете прокомментировать это.
Объяснение на испанском языке:
"".join()
: соединить элементы списка, разделив их символом""
[nv for nv in texto if nv not in vocales]
: добавить в список каждый символ (nv
) в строкеtexto
, еслиnv
он не найден в спискеvocales
.Это, написанное как
for
традиционное, будет:Здравствуйте, вы можете сделать что-то вроде этого:
Результат:
Объяснение: Функция removeVocales получает слово в качестве параметра , затем через цикл for мы проходим через это слово и через условное условие , если мы проверяем, есть ли какая-либо гласная после преобразования в нижний регистр (.lower).
Я надеюсь, что это работает для вас и удачи!
Это очень простой способ: