Aide exercice svp

Chaine de caractères debutant

a marqué ce sujet comme résolu.

Bonsoir, svp je suis débutante en python,je cherche la solution pour effacer les espaces superflus et consécutifs d’une chaine de caractères ensuite inverser la chaîne (inverser les mots non les caractères) sans utiliser split ni aucune importation…seulement boucles

J’ai essayé ce script mais rien ne s’affiche

def saisie():
    ch=str(input("ch="))

    while not(len(ch)>9 and("A"<=ch[0]<="Z")):
        ch=input("ch=")

    return ch

def supprimer(ch):
    ch1=""

    while ch.find("  ")!=-1:
        p=ch.find("  ")
        ch1=ch[0:p]+ch[p+1:len(ch)]

    return ch1


def inverser(ch2):
    ch1=ch1+" "
    ch2=""

    while (ch1!=" "):
        p=ch1.find(" ")
        ch2=ch[:p]+" "+ch1
        ch1=ch[p+1:len(ch)]

    return ch2


ch=saisie()
ch1=supprimer(ch)
ch2=inverser(ch1)

print("ch2=",ch2)
+0 -0

Pour ta fonction saisie(), si je comprend bien, tu veux que la ligne commence par une lettre?

Tu n’as pas besoin de str() avec le input() car cette fonction retourne déjà une variable de ttype str.

Je te laisse le soin de simplifier le test du while concernant la longueur.

Dans la fonction supprimer(), affiches ch et ch1 dans la boucle. Ça devrait t’aider à comprendre.

Dans la fonction inverser(), tu définis ch1 à partir de lui-même.

Fais la même chose. Affiches ch1et ch2 à chaque tour de boucle.

Tu sais utiliser les indices, le slicing et la concaténation des chaînes. Tu devrais pouvoir te passer de la méthode find() dans tes fonctions.

Dans supprimer, tu gardes le caractère courant et tu le compares au caractère précédent. Tu accumules le caractère dans une autre chaîne si les deux ne sont pas des espaces en même temps.

dans inverser, tu cherches le début de chaque mot et sa fin et tu accumules dans une autre chaîne en ordre inverse.

P.S. Si tu écris correctement la fonction supprimer, tu peux même accepter des chaînes commençant par des espaces et finissant par des espaces.

+0 -0

commence avec seulement saisie afin de vérifier que ça fonctionne comme tu veux.
ensuite, ajoute supprimer et vérifie aussi.

Si c’est un exercice, recopie nous l’énoncé.

+0 -0

Ecrire un programme qui permet de saisir une phrase (chaine de taille minimale 10 et commence par une lettre majuscule), supprime les espaces superflus, inverse la phrase (il s’agit d’inverser les mots) et affiche le résultat du traitement. Exemple : Si la phrase est : (Résolution de problèmes (
Etape 1 : suppression des espaces superflus ( (Résolution de problèmes( Etape 2 : inverser les mots ( (problèmes de Résolution(

Comme on te l’a dit, commences par tester ta fonction de saisie pour savoir si elle fonctionne.

N’utilises pas la fonction str() comme je l’ai mentionné … au cas où ça marcherait quand même.

Dans la fonction supprimer(), il faut garder dans des variables les caractères précédents et courant.

C’est le caractère précédent qu’on sauve.

On te donnera d’autres indices s’il le faut.

Pour afficher, tu peux faire ceci pour savoir quand la ligne commence et se termine:

print("*"+ch+"*")
+0 -0

Je te donne le squelette d’une version possible de la fonction supprimer:

def supprimer(ch):
    ch1 = ""     # Nouvelle chaîne.
    p = ch[0]     # Caractère précédent.
    i = 1     # On continue au deuxième caractère.
    while i < len(ch):
        c = ch[i]      # Caractère courant.
        if ...:      # Je vérifie quoi?
            # J'accumule quoi?
        p = c     # Le précédent devient le courant.
        i = i + 1      # Se positionner au caractère suivant.
    # Je suis à la fin de la chaîne.
    if p ...:      # Je dois tester quoi à la fin?
        # .... Je fais quoi?
    return ch1

Nous ne donnons pas de solutions toutes faites ici.

Le but de l’apprentissage est 1) de comprendre, 2) de détecter la/les erreurs et 3) de corriger. Fournir la solution sans réflexion ne sert à rien, n’aidera pas @Rosalina à s’améliorer. @PierrotLeFou merci de ne pas recommencer.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte