Правило 1: если в слове только гласные, оставьте слово как есть
Правило 2: если в слове есть согласная, сохраняйте только эти согласные

Но я не смог выполнить свой вывод по вышеуказанным правилам.

Выход должен быть:

MSD sys i lv crckt nd tnns t

Но мой вывод:

MSD sys lv crckt nd tnns t

Код:

def encrypt(message):
    word_list=message.split(" ")
    final_list=[]
    consonant_word=""
    vowel_list=("a","e","i","o","u","A","E","I","O","U")
    for word in word_list:
            for letter in word:
                if letter in vowel_list:
                    message=message.replace(letter,"")      
    return message

message="MSD says i love cricket and tennis too"            
print(encrypt(message))
0
Tanya Chaudhary 24 Сен 2018 в 10:41

2 ответа

Лучший ответ

Следующее будет работать:

def encrypt(message):
    vowel_set = set("aeiouAEIOU")  # set has better contains-check
    final_list = []
    for word in message.split(" "):
        if all(c in vowel_set for c in word):  # all vowel word
            final_list.append(word)  # unchanged
        else:
            # build word of only consonants
            final_list.append("".join(c for c in word if c not in vowel_set))
    return " ".join(final_list)

>>> encrypt('MESUD says i love cricket and tennis too')
'MSD sys i lv crckt nd tnns t'
1
schwobaseggl 24 Сен 2018 в 08:04

Ваша проблема в том, что вы заменяете любую встреченную гласную, поэтому буква i будет удалена. Вам необходимо проверить, есть ли в слове согласные, прежде чем удалять из него гласные. Сделать это можно так:

def encrypt(message):
    words = message.split(" ")
    vowels=("aeiouAEIOU")
    encrypted_words = []
    for word in words:
        if any(letter not in vowels for letter in word):
            word = ''.join([letter for letter in word if letter not in vowels])
        encrypted_words.append(word)
    return " ".join(encrypted_words)

Строка if any( будет верной, если в слове есть негласные (т. Е. Согласные). Затем это находит все негласные буквы:

[letter for letter in word if letter not in vowels]
0
T Burgis 24 Сен 2018 в 07:57