En ce moment j'essaye de crée un script qui ouvre un fichier texte contenant plusieure phrase d'un nombre de caratère différent.
Le but pour le programme est de trouver la phrase la plus longue...
Chose facile quand il n'y a qu'une ligne, on utilise la fonction len().
Mais quand je fait ça, la fonction englobe la totalitée du fichier...
La solution serait de crée un boucle...Mais je vois pas comment différencier les phrase l'une des autre.
Mais je vois pas comment différencier les phrase l'une des autre.
En général une phrase bien formée commence par une majuscule et se termine par un point.
Sinon pour donner un avis sur ta manière de réfléchir, je pense que tu devrais t'entraîner à réfléchir de façon plus ordonnée.
Par exemple quand je lis ça :
Citation : ShikiSokuZeku
La solution serait de crée un boucle...Mais je vois pas comment différencier les phrase l'une des autre.
Tu penses déjà au code, alors que ton problème n'est pas encore clairement défini (découper une chaîne en phrases).
En général une phrase bien formée commence par une majuscule et se termine par un point.
Je plussoie tout ce que dis LoupSolitaire, mais je dirais même plus, au cas où tu aurais des noms propres qui commencent aussi par une majuscule.
Donc il faut vérifier que ta majuscule est précédée par un point aussi.
Sans compter les points de suspensions...
Et puis la virgule, le point se sont des caractères? A réfléchir!
En fait c'est bien plus complexe que l'on ne le croit, et c'est là où je plussoie le plus LoupSolitaire, c'est qu'il faut un minimum de réflexion, et ça commence peut-être par le papier, eh oui!
Après il y aura aussi la gestion des accents suivant ta version de python.
etc... On peut aller loin comme ça.
Le méthodes de string seront intéressantes, le module string, etc...
Hum, je sais pas à quoi ressemble tes phrases, mais si c'est des phrases simples il te suffit d'utiliser la fonction split pour séparer les phrases et les mettre dans un tableau. Après il faut voir si tu dois compter les espaces, les ponctuations etc...
Enfin pour un exemple simple :
phrases = "Je suis un Zéro. J'apprends Python. Je cherche la phrase la plus longue."
phrases = phrases.split(". ")
print(phrases)
for i,n in enumerate(phrases):
if len(n) == max(len(n) for n in phrases):
print(phrases[i])
donnerait:
['Je suis un Zéro', "J'apprends Python", 'Je cherche la phrase la plus longue.']
Je cherche la phrase la plus longue.
Bon ce code est un peu bancale vu qu'il ne prend pas en compte la ponctuation, que la dernière phrase à toujours un point et pas les autres, puis encore pas mal de défaut mais après en utilisant un peu la fonction replace je pense que ça devrait être vite fini.
Par exemple, pour virer tous les espaces dans le tableau que tu as eu avec split, tu fais simplement :
for i in range(len(phrases)):
phrases[i] = phrases[i].replace(" ","")
Avec ça tu devrais pouvoir supprimer les caractères que tu ne dois pas compter rapidement.
#!/usr/bin/python
# -*- coding:utf-8 -*-
phrases = raw_input ('Entrez des phrase au hasard sans "!" ni "?" : ')
phrases = phrases.split ('. ')
plusLong = [0, 0]
for i in range (len (phrases)):
if len (phrases [i]) > plusLong [0]:
plusLong [0] = len (phrases [i])
plusLong [1] = i
else:
pass
print phrases [plusLong [1]]
Au final, ce code donne :
Entrez des phrase au hasard sans "!" ni "?" : Bonjour. Je m'appelle programmateur. Je vous montre un exemple. Au revoir.
Je m'appelle programmateur
Bon... J'ai fini par trouvé la solution, soit le fait de trouver la phrase la plus longue dans un fichier texte.
def boucle0():
global Liste
max,a=0,0
while (a < len(Liste)):
if (Liste[a] > max):
max = Liste[a]
a +=1
print (max)
def boucle():
global x, Liste, y
while 1:
txt = ObjetF.read(1)
x+=txt
y+=1
if (txt == '\n' or txt == ''):
Liste.append(y)
y=-1
if (txt == ''):
print(x)
print(Liste)
boucle0()
break
x=''
Liste=[]
y=0
ObjetF = open("Monfichier")
boucle()
Par exemple dans un fichier qui comporte les phrases:
La racine carrée de 9 est 3.
La capital du Japon est Tokyo.
La programmation c'est pas pour les noobs.
Chuck Norris est grand.
Le résultat est:
La racine carrée de 9 est 3.
La capital du Japon est Tokyo.
La programmation c'est pas pour les noobs.
Chuck Norris est grand.
[29, 30, 42, 23]
42
J'adore la fonction max recodée et nommée "boucle0", super explicite
T'as débuté avec VB ?
EDIT : En fait tu voulais séparer les lignes, pas les phrases. (le fait qu'il y ait une phrase par ligne n'est pas utilisé dans ton code, tu sépare aux sauts de lignes).
Version plus tolérante aux fichiers énormes (Python 3):
phrase_longue = ""
with open("test.py", 'r') as fp:
for l in fp:
phrase_longue = max(phrase_longue, l)
print(len(phrase_longue))
Blond, bouclé, toujours le sourire aux lèvres...
Analyse du nombre de caractère dans une phrase..
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...