Arrêt boucle condition
Fermé
yayakol
Messages postés
3
Date d'inscription
dimanche 16 août 2020
Statut
Membre
Dernière intervention
17 août 2020
-
16 août 2020 à 19:13
yg_be Messages postés 23330 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 novembre 2024 - 18 août 2020 à 09:02
yg_be Messages postés 23330 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 novembre 2024 - 18 août 2020 à 09:02
A voir également:
- Arrêt boucle condition
- Arrêt maladie - Guide
- Excel cellule couleur si condition texte - Guide
- Comment supprimer les pubs qui apparaissent sans arrêt - Guide
- Arrêt défilement excel ✓ - Forum Clavier
- Télé qui s'allume et s'éteint sans arrêt - Forum Téléviseurs
2 réponses
yg_be
Messages postés
23330
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 novembre 2024
Ambassadeur
1 551
17 août 2020 à 09:00
17 août 2020 à 09:00
bonjour, l'autre problème, c'est que tu ne nous expliques pas ce que tu souhaites que ton code fasse précisément, ni ne nous donnes d'exemple de ce que tu obtiens et de ce que tu souhaites obtenir.
tu écris "l'instruction break", alors que tu en as deux: pourquoi ne pas préciser le numéro de ligne?
peut-être suffit-il de déplacer les ligne 5 et 6 après la ligne 15?
tu écris "l'instruction break", alors que tu en as deux: pourquoi ne pas préciser le numéro de ligne?
peut-être suffit-il de déplacer les ligne 5 et 6 après la ligne 15?
yayakol
Messages postés
3
Date d'inscription
dimanche 16 août 2020
Statut
Membre
Dernière intervention
17 août 2020
17 août 2020 à 15:37
17 août 2020 à 15:37
Ah, autant pour moi.
Du coup, j'ai essayé les deux choses que tu m'avais recommandé :
1) déplacer les lignes 5 et 6 après la 15
J'obtiens donc, en écriture :
Si j'enlève le break (ligne 11), j'ai ce que je veux, mais ça poursuit sur tout le texte.
2) En enlevant while True
Même résultat, l'écriture du text2 s'arrête à la ligne 4, si j'enlève le break (ligne 13) j'ai ce que je veux mais ça continue sur tout le texte.
Non je cherchais pas spécialement à cacher la compréhension, ça n'a simplement pas d'intérêt, et puis je pense que j'ai quand même pas mal montrer mon code justement. Je voulais dire part saut de charrue la suppression du passage à la ligne. Après, comme je l'ai dit, on repositionne le pointeur à 0, ou sur la ligne concernée si possible, pour faire la même opération mais sur le texte 1.
Oui, après je préfère m'exercer sur quelque chose de concret qui m'intéresse plutôt que d'apprendre avec des exemples vagues, où je n'y vois pas d'utilité. C'est peut-être plus long et plus dur, mais au moins les choses que j'apprends son vraiment intégrées car j'aurais essayé quinze mille solutions et passé des heures sur les forums et les tutos... et ça m'a d'ailleurs permis de pas trop mal progresser
Du coup, j'ai essayé les deux choses que tu m'avais recommandé :
1) déplacer les lignes 5 et 6 après la 15
with open("f.txt", "r") as f, open("f2.txt", "r") as f2, open("ff.txt", "w") as output1: while True: text1 = f.readline() text2 = f2.readline() nb_mots_t1 = len(text1.split()) nb_mots_t2 = len(text2.split()) ecart_max = 3 if nb_mots_t1-nb_mots_t2>ecart_max: text2 = text2.replace('\n', ' ') output1.write(text2) break else: output1.write(text2) if not text1 and not text2: break
J'obtiens donc, en écriture :
bla bla bla bla bla bla bla bla bla bla bla bla
Si j'enlève le break (ligne 11), j'ai ce que je veux, mais ça poursuit sur tout le texte.
2) En enlevant while True
with open("f.txt", "r") as f, open("f2.txt", "r") as f2, open("ff.txt", "w") as output1: fini = False while not fini: text1 = f.readline() text2 = f2.readline() fini = not text1 and not text2 nb_mots_t1 = len(text1.split()) nb_mots_t2 = len(text2.split()) ecart_max = 3 if nb_mots_t1-nb_mots_t2>ecart_max: text2 = text2.replace('\n', ' ') output1.write(text2) break else: output1.write(text2)
Même résultat, l'écriture du text2 s'arrête à la ligne 4, si j'enlève le break (ligne 13) j'ai ce que je veux mais ça continue sur tout le texte.
Non je cherchais pas spécialement à cacher la compréhension, ça n'a simplement pas d'intérêt, et puis je pense que j'ai quand même pas mal montrer mon code justement. Je voulais dire part saut de charrue la suppression du passage à la ligne. Après, comme je l'ai dit, on repositionne le pointeur à 0, ou sur la ligne concernée si possible, pour faire la même opération mais sur le texte 1.
Oui, après je préfère m'exercer sur quelque chose de concret qui m'intéresse plutôt que d'apprendre avec des exemples vagues, où je n'y vois pas d'utilité. C'est peut-être plus long et plus dur, mais au moins les choses que j'apprends son vraiment intégrées car j'aurais essayé quinze mille solutions et passé des heures sur les forums et les tutos... et ça m'a d'ailleurs permis de pas trop mal progresser
yg_be
Messages postés
23330
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 novembre 2024
1 551
18 août 2020 à 09:02
18 août 2020 à 09:02
il s'agit d'alors de chariot, pas de charrue: https://fr.wikipedia.org/wiki/Retour_chariot
tu ne nous permet pas de comprendre ce que tu veux obtenir en nous montrant un code qui ne fait pas ce que tu veux obtenir.
tu ne nous permet pas de comprendre ce que tu veux obtenir en nous montrant un code qui ne fait pas ce que tu veux obtenir.
17 août 2020 à 09:05
17 août 2020 à 13:15
text1 :
text2 :
Du coup, je calcul le nombre de mots lignes par lignes en comparant les deux fichiers. Dès qu'il y a un écart supérieur à trois mots, on enlève le saut de charrue pour que la ligne 5 du text2 se mette au niveau de la 4 :
Pour l'instant, l'écriture de mon fichier (qui recopie donc le text2) s'arrête à la ligne 4, sans exécuter le saut de charrue. Si j'enlève l'instruction break (la deuxième sur mon code) ça fonctionne mais ça continue de le faire sur tout le texte, or ce que je souhaite, c'est qu'après la suppression du saut de charrue, je puisse recommencer la lecture à la position 0, ou, pour bien faire, à la ligne 4, puisque c'est là où ma condition est remplie (nombre supérieur de trois mots). Bon, j'ai conscience que je cherche peut-être à faire un truc qui n'est pas de mon niveau (et qui est d'ailleurs, in fine, pas réalisable) mais sans forcément donner du code si je pouvais avoir quelques conseils ? Merci :)
17 août 2020 à 14:13
tu écris "ça donne exactement le même résultat", et tu ne nous montres pas ce que tu as essayé.
pourquoi fais-tu un exemple avec tous les mots identiques? pour éviter que nous comprenions?
complete également ton exemple pour montrer comment tu veux continuer après avoir supprimé un passage à la ligne.
quel sens donnes-tu au mot "charrue" dans ce contexte?
souhaites-tu améliorer ton niveau? alors, je suggère de commencer par des exercices plus simples.