je commence à me perdre dans la logique de mon code.
pour faire simple, le code prend une liste de binaire en entrée (peu importe la taille de la liste).
un tuple "t3" est défini à 0 au départ
à chaque tour de boucle, le code vérifie ces condition :
si valeur1 == 0 et valeur2 == 0, ou valeur1 == 1 et valeur2 == 1 => renvoie 0
si valeur1 == 1 et valeur2 == 0, ou valeur1 == 0 et valeur2 == 1 => renvoie 1
alors ça me retourne 3 tuples de valeurs définis comme suit :
t1 :(1,0)
t3: (1,0)
et le couple 3 est formé par la valeur la plus représentée dans les tuples 1,2 et 3
pour ce cas ci, je vérifie si t1[0], t2[0] et t3 (de départ) à une majorité de 0
et si t1[1], t2[1] et t3 (de départ) à une majorité de 0
là, je vois que t3 aura comme valeur 0 ou 1 en fonction de ce cas t1[0], t2[0] et t3 (de départ) ou 1[1], t2[1] et t3 (de départ)
et, donc ensuite, mon code devrait NORMALEMENT passer au second élément de la liste en entrée, en déterminant les tuple t1, t2 et t3 possibles (en utilisant, cette fois le t3 de la première itération (t3 = (1,0))
mon code boucle sur le le second for alors qu'il ne devrait pas, et je ne n'arrive pas à débug .
si qqun peut jeter un coup d'oeuil et me dire où je me suis planté dans ma logique, ça serait cool.
merci d'avance à tout ceux qui pourront me donner un petit peu d'aide.
Si votre code est devenu illisible, c'est quand même osé de nous proposer de le relire à votre place. Pourquoi ne pas prendre l'initiative de le ré-écrire pus proprement?
Si votre code est devenu illisible, c'est quand même osé de nous proposer de le relire à votre place. Pourquoi ne pas prendre l'initiative de le ré-écrire pus proprement?
Bonjour,
Merci pour votre message.
Sachez qu'en général;je me débrouille tout seul pour gérer mon code lorsqu'il ne fonctionne pas comme je veux.
là, j'ai évidemment déjà ré-écris depuis le début mon code.
là, ce qui m'échappe, c'est pourquoi avec
len(item2) = 0
pourquoi sur la seconde boucle for:
for i in range(0, len(item2)):
le code, une fois exécutée, ne sort pas après le premier tour de boucle de
Peut être à cause de la ligne 28 car une liste contenant un item de longueur nulle sera de longueur 1.
>>> len([''])
1
>>>
Pour le reste on écrit un code pour résoudre un problème! Non seulement vous ne prenez pas la peine de le décrire mais le code qui a été produit ne permet pas de savoir ce qu'on a cherché à faire.
Peut être à cause de la ligne 28 car une liste contenant un item de longueur nulle sera de longueur 1.
>>> len([''])
1
>>>
Pour le reste on écrit un code pour résoudre un problème! Non seulement vous ne prenez pas la peine de le décrire mais le code qui a été produit ne permet pas de savoir ce qu'on a cherché à faire.
Rebonjour @mps ,
oui, je sais qu'une liste contenant un item de longueur nulle sera de longueur 1.
lors du premier tour
for index2, item2 in enumerate(lst_c_sub):
item2 à pour valeur 0
de ce fait, lors du passage dans la boucle:
for i in range(0, len(item2)):
il ne devrait exécuter le code dans le second for qu'une seule fois.
hors, bien que len(item2) à pour valeur 1, il passe une deuxième fois dans le second for au lieu de sortir de ce ce for et iterer
for index2, item2 in enumerate(lst_c_sub):
D'autres part, j'ai expliqué (avant de coller mon code) dans le texte explicatif de mon premier message, ce que le code est censé faire.
Peut-être n'ai-je pas été ien clair, auquel cas, je m'en excuse.
Je teste ton code, et il "fonctionne" (je n'ai pas regardé la cohérence ou si ça donne le bon résultat), juste erreur à la ligne 143 où on cherche à afficher lst_c_sub que l'on a supprimé plus haut dans le code (donc erreur normale). ça ne rerentre pas dans la boucle (on ne voit d'affichage "i 1" lors de l'exécution du script)
hors, bien que len(item2) à pour valeur 1, il passe une deuxième fois dans le second for au lieu de sortir de ce ce for et iterer
for index2, item2 in enumerate(lst_c_sub):
Soit ce que vous décrivez est un bug dans l'interpréteur, soit on doit s'infliger la lecture de votre pensum pour expliquer ce que vous cherché à écrire...
moimeme10 a écrit:
D'autres part, j'ai expliqué (avant de coller mon code) dans le texte explicatif de mon premier message, ce que le code est censé faire.
Vous essayez d'expliquer ce que le code que vous avez écrit devrait faire mais pas pourquoi, pour résoudre quel problème vous avez choisi ces structures de données ou l'algo. que réalise le code.
Et commencer par une énormité comme "un tuple "t3" est défini à 0 au départ"... ça promet.
Tu n'expliques pas le but du programme, seulement son déroulement. Et ces explications sont aux moins aussi incompréhensibles que le code lui-même.
Commences donc par nous expliquer quel problème doit résoudre le programme ou le morceau de programme que tu essayes de coder.
- Edité par PasEnvie2 hier à 12:01
Et de préférence avec plusieurs exemples
Valeurs des données en entrée
Résultats attendus en sortie
Ps avec des identifiants charmants comme "item2" et "lst_j", on est sur de se paumer dans son propre code dès que ça dépasse 10 lignes. Alors 146 sans découpage en fonctions...
- Edité par michelbillaud 13 mars 2024 à 14:21:55
problème de logique de code
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
Le Tout est souvent plus grand que la somme de ses parties.