0
votes

Résultats inattendus tout en itérant à travers une chaîne. Les valeurs de retour n'incluent pas tous les remplacements de caractères

J'essaie donc de résoudre un problème sur la plate-forme Pybites où il vous demande de faire ce qui suit:

  • Prenez n'importe quelle chaîne
  • Formatez-le à minuscule
  • Remplacez toute voyelle avec le * symbole
  • piste combien de voyelles ont été modifiées

    la chaîne d'exemple texte = 'Hello World' doit renvoyer le tuple suivant: ('H * ll * w * rdld', 3) avec 3 Représentant les voyelles totales modifiées.

    Le code ci-dessous comprend une fonction qui devrait prendre en charge toutes les étapes répertoriées. J'ai même utilisé l'affectation afin que je puisse utiliser .replace () et émettez les caractères modifiés: xxx

    Le problème que j'ai eu est que, bien que je vérifie avec succès si un personnage Une chaîne est une voyelle ou non, la valeur de retour est désactivée: ('enfer * w * rld', 3) Je sais que remplacer () vérifie une voyelle à chaque itération, mais il ne stocke pas tous les résultats.

    Tout guidage sur les étapes que je devrais prendre? Merci d'avance.


1 commentaires

Est-ce que cela répond à votre question? String Remplacer ne semble pas fonctionner


3 Réponses :


0
votes

Essayez cette solution xxx


2 commentaires

Merci! J'ai totalement dû chercher à utiliser le mot-clé "dans". Je savais une fois que j'avais 3 ans pour des boucles que ma réponse allait être trop compliquée, même si c'était correct. C'était une très belle solution.


YR Bienvenue Buddy



1
votes

Le problème est l'utilisation de mots variable lors d'un remplacement. Chaque utilisation de la variable de mot fait référence à sa forme variable de boucle d'origine. Vous devez utiliser la chaîne de résultat créée par le remplacement. Un correctif pourrait attribuer une valeur Aucun pour résulter avant d'entrer dans la boucle la plus haute la vérification si le travail a été utilisé: xxx

L'utilisation des lignes de scission est ambiguë pour moi, je n'ai pas vu le besoin de ça. Je pense que la création d'une traversée sera plus efficace que les boucles imbriquées utilisées xxx


0 commentaires

0
votes

Le problème est ici xxx pré>

vous remplacez la voyelle du texte code> code> sans l'enregistrer pour la boucle. P>

Prenez le mot Bonjour World Code> Comme exemple, P>

def strip_vowels(text: str) -> Tuple[str, int]:
    vowels = 'aeiou'
    for vowel in vowels:
        text = text.replace(vowel.upper(), '*')
        text = text.replace(vowel.lower(), '*')
    return text, text.count('*')

print(strip_vowels('Hello World'))
# Output:
# ('H*ll* W*rld', 3)


1 commentaires

C'était une réponse géniale! Le tableau visualisant comment ma mise en œuvre itérale à travers la chaîne était cruciale à ma compréhension. Merci!!