J'essayais de retirer les voyelles venant après des consonnes, mais le code supprime toutes les voyelles.
Je ne comprends pas pourquoi il supprimerait "AAA" code>. P> def kk(phrase):
v = ['a', 'e', 'i', 'o', 'u', 'y']
for i in phrase:
if i not in v and phrase[phrase.index(i)+1] in v:
phrase=phrase.replace(phrase[phrase.index(i)+1],"")
return phrase
print (kk("aaa bo cy da eee fe"))
5 Réponses :
Méthode 1:
def kk(phrase):
v = set('aeiou')
i = 0
while i < len(phrase)-1:
if phrase[i] not in v and phrase[i+1] in v:
phrase = phrase[:i+1] + phrase[i+2:]
i += 1
return phrase
@Tomerikoo: Merci pour le BugReport. Fixé
D'accord, alors pourquoi cela ne fonctionne pas est dû à la fonction Un moyen de résoudre ce problème: p> index code> utilisé avec remplacer code>. La fonction code> index index> retournera l'index de la première occurrence de la chaîne, c'est pourquoi, dans l'exemple mentionné, il renvoie 0 au lieu de l'index de A code> à venir après b code>.
De plus, le code d'origine jette une erreur d'index hors de portée chaque fois que le dernier caractère n'est pas dans v code>
Je suppose que vous vouliez dire une liste, pas un tableau. Et pourquoi le code suppose i> pour obtenir cela?
@Tomerikoo Oui, j'ai signé la liste. Je suis nouveau à Python alors s'habituer à la terminologie. La dernière solution que j'ai proposée n'était pas la meilleure donc oui ..
Votre code soulève une exception. S'il vous plaît, testez-le avant de poster. Votre problème est que vous changez la chaîne phrase code> tout en bouclant sur ses éléments d'origine afin que vous obteniez une inadéquation d'indices
@Tomerikoo j'ai vérifié le code. Il n'amène aucune exception pour moi
essayez de faire imprimer (kk ("aaa bo cy da eee fe")) code> comme op et dites-moi ce que vous obtenez
Votre problème principal est que second problème, Même si vous avez corrigé le problème Pour surmonter ceci, vous souhaitez d'abord itérer les indices, créer une nouvelle variable pour le résultat et utiliser la tranchée. Quelque chose comme: p> et ceci donne: p> Notez que un remplacer code> remplace 'a' code> par exemple, vous les supprimerez tous: remplacer code> est que vous utilisez index code> , qui renvoie le premier index 'da' code> de votre chaîne, l'index est renvoyé pour le 'A' code> sera effectivement 0 code>. P> E code> était également Supprimé en raison de l'espace, cela peut être facilement manipulé p> p>
une solution utilisant impression: p> Plus de tests: P> itheroTools.groupby code> et ithertools.chain code>:
aaax
aaaxx
a aax
Pour cette tâche, l'expression régulière est le meilleur choix:
import re s = "aaa bo cy da eee fe" result = re.sub(r"(?<=[^aeiouy ])[aeiouy]", "", s, flags=re.I)
Votre logique est claire: si une voyelle apparaît après une consonne, vous supprimez toutes les occurrences de cette voyelle de la phrase complète. Vous devez supprimer seulement celui-ci.