
Envoyé par
alainb
J'espère que mes informations sont compréhensibles.
C'est écrit en français pas de soucis!
Mais je ne pense pas qu'on puisse reproduire plus facilement quoi que ce soit!
"reproduire" signifie recopier quelques lignes de codes avec un minimum de données pour constater les mêmes résultats que vous lorsqu'on l'exécute chez soi.
Si on doit éditer le code, on n'est pas sur de reproduire le même problème (et donc on perd son temps).
Quand je ne comprend plus ce que fait un code que j'ai écrit, je le fous à la poubelle... Et je recommence en essayant de décomposer autrement les opérations pour essayer de maîtriser ce qu'il s'y passe. C'est comme ça qu'on progresse.
*edit*
Par exemple, vous racontez "chaque paragraphe débute par le nom d'une personne (en gras). Le sujet posé porte précisément sur cette ligne...".
On devrait voir une fonction recevant un objet à 2 dimensions (paragraphes et lignes) sur lequel le corps (de la fonction) effectue le travail attendu et retourne l'objet modifié.
Charge à l'appelant de récupérer le résultat pour l'écrire où il veut.
Dans votre cas, vous passez le nom de fichier à la fonction et l'objet sur lequel elle travaille est une variable globale.
Puis dans le corps de la fonction, on devrait travailler sur la première ligne... pas sur ce qui ressemble à tout le paragraphe.
et puisque vous faites de la mise au point, virez tout ce qui ne sert à rien!
Illustration.
Je prends un objet a 2 dimensions comme:
P = [ [1, 2, 3], ['*', 5, 6], [7, 8, 9], [10, 11, 12], ]
Et je dis que lorsque je rencontre un tuple/paragraphe dont le premier item est '*' alors je le remplace par le premier item du paragraphe précédent.
Ce qui donne le code:
1 2 3 4 5 6 7 8 9 10 11 12
| def foo(p):
v = None
for u in p:
if u[0] != '*':
v = u[0]
else:
assert v, 'fatal, previous value undefined'
u[0] = v
return p
P = [ [1, 2, 3], ['*', 5, 6], [7, 8, 9], [10, 11, 12], ]
print(foo(P)) |
dont la sortie sera:
[[1, 2, 3], [1, 5, 6], [7, 8, 9], [10, 11, 12]]
Ca fait un code de 9 lignes, le votre en fait 40!
Non seulement il ne marche pas mais vous ne comprenez plus ce qu'il fait vu la distance entre l'intention de départ et sa réalisation...
- W
Partager