IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Exo: Vérification typographique


Sujet :

Python

  1. #1
    Invité
    Invité(e)
    Par défaut Exo: Vérification typographique
    Bonjour à tous,

    Je cale sur un exercice à faire en cours de programmation ( 1er année bachelier en Belgique ).
    Je ne comprend pas encore trop bien les boucles, du coup je suis parti sur autre chose.
    Si quelqu'un peut me conseiller je suis preneur, merci.

    L’intitulé de l’exercice est le suivant:

    Écrire un programme qui renvoie une erreur si une phrase encodée par l'utilisateur ne vérifie pas les règles élémentaires de typographies.
    Règles :

    - La phrase commence par une majuscule
    - La phrase se termine par un point
    - Les mots sont séparés par un et un seul espace excepté en cas de symbole de ponctuation ( dans ce cas, on respecte les règles suivantes ):

    - La virgule et le point sont collés au mot qui les précède et sont suivi par un espace.
    - Le point-virgule, les deux points et le point d'interrogation sont entourés d'un espace.

    Où en suis-je dans mon exercice ?
    Tout fonctionne. Sauf l'espace après le point..

    si par ex la phrase est :
    Qu'est ce qu'il fait froid aujourd’hui.J'espère que demain ça ira mieux.

    Je n'arrive pas lui faire comprendre que c'est le point en milieu de phrase qui doit avoir un espace, et le non le point en fin de phrase.
    Car sinon je suis obligé de mettre un espace quand je termine ma phrase, et du coup c'est pas vraiment correcte..

    Après si on doit juste entrer une phrase, je ne vois pas trop l’intérêt de dire qu'il faille un point après. Ça voudrait dire qu'on est sensé pourvoir écrire
    deux phrases l'une à la suite de l'autre non ?

    J'espère que j'arrive à me faire comprendre..

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    """
        Programme qui renvoie une erreur si une
        phrase encodée par l'utilisateur ne vérifie
        pas les règles élémentaires de typographie.
     
    """
    # variables caractères qui seront vérifiées #
    virgule = ','
    point_virgule = ';'
    deux_points = ':'
    point_dint = '?'
     
    erreur = 0  # variable compteur
    phrase = str(input("\nVeuillez entrer une phrase :\n"))
    print()
     
    # majuscule et point en fin de phrase #
    if phrase[0] != phrase[0].upper():
        erreur += 1
    if phrase.endswith(".") is False:
        erreur += 1
    if phrase.endswith(" ."):
        erreur += 1
     
    # vérifie les espaces #
    if '  ' in phrase:
        erreur += 1
     
    # verifie si des variables caractères sont présentes dans la phrase #
    if virgule in phrase:                                   # si c'est le cas,
        virgule = ', '                                      # la virgule devient une virgule correcte.
        if virgule not in phrase:                           # si cette même virgule n'est pas dans la phrase,
            erreur += 1                                     # erreur +1
        virgule = ' ,'                                      # la virgule devient une virgule incorrecte.
        if virgule in phrase:                               # si cette même virgule est dans la phrase,
            erreur += 1                                     # erreur +1
     
    if point_virgule in phrase:                             # même principe pour les autres.
        point_virgule = ' ; '
        if point_virgule not in phrase:
            erreur += 1
    if deux_points in phrase:
        deux_points = ' : '
        if deux_points not in phrase:
            erreur += 1
    if point_dint in phrase:
        point_dint = ' ? '
        if point_dint not in phrase:
            erreur += 1
     
    # afficher si on a des erreurs ou pas #
    if erreur == 0:
        print("Aucune faute en vue")
    else:
        print("ERREUR : Votre phrase n'est pas correcte !")
    Avez-vous une solution sans utiliser de boucle ?

    D'avance merci, bonne journée à tous

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 687
    Par défaut
    Salut,

    Citation Envoyé par Hatcat Voir le message
    Je n'arrive pas lui faire comprendre que c'est le point en milieu de phrase qui doit avoir un espace, et le non le point en fin de phrase.
    Car sinon je suis obligé de mettre un espace quand je termine ma phrase, et du coup c'est pas vraiment correcte..
    Techniquement, il serait plus correct de parcourir le moins de fois possible la chaines de caractère pour sortir le résultat. Et si vous ne voulez pas de "boucle", sachez qu'en écrivant ',' in phrase, Python va faire la boucle à votre place.

    Si vous écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    # verifie si des variables caractères sont présentes dans la phrase #
    if virgule in phrase:                                   # si c'est le cas,
        virgule = ', '                                      # la virgule devient une virgule correcte.
        if virgule not in phrase:                           # si cette même virgule n'est pas dans la phrase,
            erreur += 1                                     # erreur +1
        virgule = ' ,'                                      # la virgule devient une virgule incorrecte.
        if virgule in phrase:                               # si cette même virgule est dans la phrase,
            erreur += 1                                     # erreur +1
    on a déjà fait 3 boucles implicites... mais rien n'empêche d'écrire "aaaa, bbb,cccc" et comme il y a au moins un ',' et un ', ' et pas de ', ' dans la phrase: ce code ne verra pas l'erreur.

    => votre logique ne fonctionne pas: il faut tester chaque occurrence de virgule pour vérifier que le caractère précédent est alphanumérique et le caractère suivant un espace.

    Et çà, désolé, mais je ne vois pas comment vous pouvez y arriver sans boucle...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,

    Je trouve que c'est un exercice intéressant...

    Mais sans boucle c'est une mission...

    Citation Envoyé par Hatcat Voir le message
    - La phrase se termine par un point
    Ce point m'étonne, je ne vois pas comment on pourrait le faire...

    En détectant les majuscules ? Pas vraiment à cause des noms propres par exemple mais surtout l'auteur pourrait ne pas mettre de majuscule en début de phrase, ce qui est justement une des fautes possibles...

    En plus une phrase peut aussi se terminer par un point d’interrogation ou d'exclamation par exemple...

  4. #4
    Invité
    Invité(e)
    Par défaut Merci !
    Bonsoir,

    Merci beaucoup pour vos réponses !

    Je comprends mieux maintenant qu'en effet, je n'ai pas la bonne logique et que les boucles seraient clairement plus utiles..

    Je vais retravailler tout ça.

    Excellente soirée !
    Dernière modification par Invité ; 01/12/2019 à 18h17.

  5. #5
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2015
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2015
    Messages : 56
    Par défaut
    En typographie, on ne dit pas un espace mais une espace.
    Une espace (nom féminin) est, en typographie, un caractère particulier qui permet d'insérer un espacement blanc dans le texte. ... Une espace est parfois appelée un blanc.

  6. #6
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Les deux sont tolérés, pas de quoi en faire un fromage.

  7. #7
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2013
    Messages : 21
    Par défaut
    Bonjour,

    Les expressions régulières peuvent aussi éviter les boucles...
    Évidemment, ce n'est peut-être pas le but de l'exercice.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. vérification de passage dans un select case
    Par arsgunner dans le forum ASP
    Réponses: 5
    Dernier message: 14/06/2004, 10h05
  2. [VB6] procédure de vérification d'adresse mail ?
    Par ghohm dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/06/2004, 13h05
  3. [VB.NET] Vérification d'existance d'une table
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/05/2004, 10h17
  4. JavaScript de vérification de formulaire
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/02/2003, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo