CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Python] Des BG de python ici? (Prépa)

[PoissonVolant]
[PoissonVolant]
Niveau 15
19 novembre 2013 à 18:52:00

Bonsoir. Je dois faire un exo, mais je butte à mort : voici l'enoncé

:d) Reprenez le programme de l'exercice pr ec edant en consid erant cette fois la vraie ponctuation de la langue fran caise :
une phrase peut egalement se terminer par "..." (en plus de ".", " ?" et " !"). Nota : si le texte inclut une phase vide,
elle est compt ee. Par exemple, "Ha !.Tu ris..." et "Ha..Tu ris..." contiennent 3 phrases (la deuxi eme phrase est vide).

L'enonce précedent est le même, sauf qu'il exclut "...". J'ai trouvé ça comme programme (qui marche) :

texte = "Ha !.Tu ris..."
i = 0
compteur = 0
longueur = len(texte)
while i<longueur :
if texte[i]=="." or texte[i]=="?" or texte[i]=="!" :
compteur = compteur + 1
i=i+1

print("Le texte contient",compteur,"phrases")

Help SVP :hap:

Ywnith
Ywnith
Niveau 10
19 novembre 2013 à 18:55:39

Déjà il faudrait que tu fasses une demande plus claire car bon avec les espaces et les accents manqués dans l’énoncé ...

[PoissonVolant]
[PoissonVolant]
Niveau 15
19 novembre 2013 à 18:58:00

Ouais je sais, c'est sale. Je vais faire capture écran, ce sera plus simple :hap:

Pseudo supprimé
Pseudo supprimé 19 novembre 2013 à 19:00:46

Quand t'as un point t'as qu'à vérifier si en i+1 et i+2 t'as aussi un point, si c'est le cas c'est que ta phrase est finie.
C'est déjà un bon début.

[PoissonVolant]
[PoissonVolant]
Niveau 15
19 novembre 2013 à 19:03:03

https://image.noelshack.com/fichiers/2013/47/1384884097-screenshot-from-2013-11-19-18-54-52.png

Voilà. Mon programme correspond à celui de la question 2. Je n'arrive pas à faire la 3 : j'ai essayé d'autres conditions avec if, mais ca m'emmène toujours en gros bordel avec des : Le texte contient -6 phrases :hap:

[PoissonVolant]
[PoissonVolant]
Niveau 15
19 novembre 2013 à 19:27:26

Ah, j'y suis presque. Mais si je met quatre points, je me fait avoir (ca fait 1 phrase) :

texte = "Ha....Tu ris..."
i = 0
compteur = 0
longueur = len(texte)
while i<longueur :
:hap: if texte[i]=="." or texte[i]=="?" or texte[i]=="!" :
:hap: :hap: compteur = compteur + 1
:hap: if texte[i]=="." and texte[i-1]=="." and texte[i-2]=="." :
:hap: :hap: compteur = compteur - 2
:hap: i=i+1

Désolé pour les :hap: , ça compte comme tabulation

print("Le texte contient",compteur,"phrases")

Pseudo supprimé
Pseudo supprimé 19 novembre 2013 à 19:33:14

C'est plus facile de faire avec i +1 +2 que i -1 -2.
Tu n'as pas besoin de faire -2 à ton compteur, et rien ne t'oblige à faire i = i + 1, tu peux l'incrémenter de 3 au lieu d'1 si besoin est.

[PoissonVolant]
[PoissonVolant]
Niveau 15
19 novembre 2013 à 19:34:37

Ouais mais dans ce cas là, ca ne comptera plus les ? et les !, non? :(

Pseudo supprimé
Pseudo supprimé 19 novembre 2013 à 19:37:15

Mais si tu veux rester avec ton -1 -2 tu peux garder en mémoire le i du dernier point de suspension. Si tu as encore des . après tes points de suspension tu pourras comparer le i actuel avec le i que tu as gardé au chaud, si y'a une différence de 2 ou moins c'est que tu dois compter ton point comme un point normal et non pas comme un nouveau point de suspension.

Et au passage, je ne sais pas comment fonctionne python mais si ta phrase commence par ... tu risques d'avoir des problèmes non ?

Pseudo supprimé
Pseudo supprimé 19 novembre 2013 à 19:38:23

Ben j'ai dit "si besoin est", donc juste dans le cas où t'as 3 points d'affilés. Ça change rien au niveau des ? et !

[PoissonVolant]
[PoissonVolant]
Niveau 15
19 novembre 2013 à 19:40:05

Désolé, mais j'ai rien pigé à ce que t'as dit :hap:
A part les conditions et les variables de bases, j'y connais pas grand chose :hap:

Pseudo supprimé
Pseudo supprimé 20 novembre 2013 à 17:44:03

http://pastebin.com/LZcvu9wD
Tiens j'ai commenté viteuf.
( v. 2 de Python )

C'est plutôt sale et ça marche que parce que interprétateur Python teste dans le même ordre duquel t'écris les conditions,
Sinon t'aurai une belle erreur du genre "Index undefined" à la ligne 10
C'est à dire que "TXT[i+1]" n'existe que si "i<len(TXT)-1" ,
Donc faire les deux tests dans la même condition c'est suicidaire ( mais j'aime ça )

jc-angel
jc-angel
Niveau 10
20 novembre 2013 à 19:22:43

Serialesky :d) Pas vraiment suicidaire ni même sale algorithmiquement on appelle ça un "et puis" ou "and then" la majorité des langage que je connaisse utilise des "et puis" et des "ou alors" (car plus pratique et plus optimisé). Les rare exception comme ADA propose 2 mot clef pour distingué le "et" et le "et puis" algorithmique.

Sinon ta solution ne marche pas car si tu a !? a la suite tu compte une phrase alors que ça doit être 2.

Sinon une solution simple est la suivante en jouant sur l'indice i (tout en faisant attention de pas sortir du tableau quand tu cherche des ...) :
http://pastebin.com/Br1mBy7J

Pseudo supprimé
Pseudo supprimé 20 novembre 2013 à 19:47:23

" Sinon ta solution ne marche pas car si tu a !? a la suite tu compte une phrase alors que ça doit être 2. "
Euh .. non c'est géré ça.

"Coucou !? Ca va ?" > 2 phrases
"Coucou !?!.!?. KIKOO !...? " > 2 phrases

http://redsky.fr ► Outils pour JVC :noel:

jc-angel
jc-angel
Niveau 10
20 novembre 2013 à 19:50:04

"Nota : si le texte inclut une phase vide,
elle est comptée. Par exemple, "Ha !.Tu ris..." et "Ha..Tu ris..." contiennent 3 phrases (la deuxième phrase est vide)."

donc
"Coucou !? Ca va ?" > 3 phrases
"Coucou !?!.!?. KIKOO !...? " > 10 phrases

Pseudo supprimé
Pseudo supprimé 20 novembre 2013 à 19:52:01

https://image.noelshack.com/fichiers/2013/47/1384973502-pythonpute.jpg

http://redsky.fr ► Outils pour JVC :noel:

Pseudo supprimé
Pseudo supprimé 20 novembre 2013 à 20:09:42

Faut lire l'énoncé Serialesky, jc-angel a raison.

Pseudo supprimé
Pseudo supprimé 20 novembre 2013 à 20:19:31

Ah, autant pour moi alors. (Mais bon l'énonce me semble illogique alors, j'vois pas l'intérêt.)

http://redsky.fr ► Outils pour JVC :noel:

DN4
DN4
Niveau 7
22 novembre 2013 à 00:54:22

Il n'y a qu'une exception : trois points consécutifs.

Soit une chaîne de caractères S, si l'on souhaite compter le nombre de phrases comme définies dans l'énoncé, c'est-à-dire zéro caractère quelconque ou plus - différents de ".", "?", et "!" - suivi(s) soit du caractère ".", soit "?", ou bien "!", on doit exclure de S les caractères différents de ces derniers après avoir considéré chaque point suivi de deux pour qu'un point, c'est-à-dire enlever les deux points suivants pour n'en garder qu'un.

Le nombre de phrases dans S est alors égal à la taille de la chaîne S, c'est-à-dire au nombre de caractères restants dans S.

Par contre, l'énoncé n'est pas clair, car il n'est pas dit :

- si une exception suivie d'une règle, ou bien l'inverse, doit être considérée comme vérifiant le motif d'une ou deux phrases vides, e.g., "...?" pourrait ne correspondre qu'à une seule phrase ;

- si l'exception a une précédence plus élevée que les règles ou non, e.g., si "..." doit être effectivement vu comme tel, ou alors comme ".. ." ou bien ". .." (identiques).

Trois solutions, la solution C étant la plus rapide sur des petits tests et la B la plus rapide des trois : https://gist.github.com/anonymous/7591895/raw/ac072911ffa02d57a8af18f2dbb0421a1a93677b/gistfile1.py

e2-e4
e2-e4
Niveau 5
20 novembre 2014 à 01:25:51

texte = "Salut. Bien ou bien ? Okay !! ... Oui ! . :S"

ponct = ["...", "?", "!", "."]
texte = [texte]
for p in ponct:
    txt = []
    for t in texte:
        txt += t.split(p)
    texte = txt

print(len(texte) - 1)

7

:ok: :ok: :ok:

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment