Fonction
Fermé
test-test
-
Modifié le 9 oct. 2020 à 20:08
Whismeril Messages postés 18992 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 29 mars 2024 - 10 oct. 2020 à 06:39
Whismeril Messages postés 18992 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 29 mars 2024 - 10 oct. 2020 à 06:39
A voir également:
- Fonction
- Fonction si et - Guide
- Fonction somme excel - Guide
- Fonction moyenne excel - Guide
- Fonction trier excel - Guide
- Fonction couleur excel - Guide
4 réponses
jordane45
Messages postés
38112
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
29 mars 2024
4 634
10 oct. 2020 à 01:50
10 oct. 2020 à 01:50
Bonjour,
if est_octet(n) == "true" and str(n)[0] == 1:
Whismeril
Messages postés
18992
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
29 mars 2024
923
Modifié le 10 oct. 2020 à 06:53
Modifié le 10 oct. 2020 à 06:53
Bonjour à tous
@Test test et Dachiasse, sur CCM comme tout les forums de code qui se respectent, il existe un outil qui permet de garder la mise en forme du code quand il est posté.
Notamment, il préserve l'indentation, ce qui est primordial en Python, et ajoute de la couleur.
Test test, on voit que Baladur a édité ton premier message hier soir, je pense que c'était pour pour les ajouter.
Et grâce à ces balises, on vois dans cette partie
Que le "else" est dans le for et non pas "à la suite" du if, car il n'a pas la bonne indentation.
Dachiasse
Donc
Du coup, est_octet devrait plutôt ressembler à ça
Je dis ressembler car il y a un problème ton for dans cette fonction.....
En l'état, il créé une seconde variable x, qui n'est pas celle d'entrée, je vais l'appeler x' pour ne pas se mélanger.
En théorie ça ferait : au premier "tour" de for, x' vaut 0 et tu retournes true, au second "tour" de for x' vaut 1 et tu retournes à nouveau true....
En vrai, ça s'arrête au premier "return", donc dès que la longueur de x est 8, ça retourne vrai, "AZERTYUI" retourne vrai.
Pour vérifier que tous les caractères d'une chaine sont 0 ou 1, d'abord c'est cette chaine qu'il faut tester et pas un tableau [0,1], et surtout pour que ce soit vrai, il faut que ce soit vrai pour tous les caractères, alors que pour que ce soit faux, il suffit d'un faux.
Je te montre en pseudo code
@Test test et Dachiasse, sur CCM comme tout les forums de code qui se respectent, il existe un outil qui permet de garder la mise en forme du code quand il est posté.
Notamment, il préserve l'indentation, ce qui est primordial en Python, et ajoute de la couleur.
Test test, on voit que Baladur a édité ton premier message hier soir, je pense que c'était pour pour les ajouter.
Et grâce à ces balises, on vois dans cette partie
def est_octet(x): if len(str(x)) == 8: for (x) in [0, 1]: return "true" else: return "false"
Que le "else" est dans le for et non pas "à la suite" du if, car il n'a pas la bonne indentation.
Dachiasse
"false"n'est pas la même chose que
falseaurait sans doute été plus parlant que,
"false" est différent de False, puisque la réponse de test test montre qu'il n'a pas compris
une différence entre False et false...
Donc
"false", c'est une chaine de caractère => du texte, c'est écrit entre guillemets et ça apparait rouge ou vert selon ton éditeur, alors que
false(sans guillemet et en bleu) c'est la valeur binaire faux.
Du coup, est_octet devrait plutôt ressembler à ça
def est_octet(x): if len(str(x)) == 8: for (x) in [0, 1]: return true else: return false
Je dis ressembler car il y a un problème ton for dans cette fonction.....
En l'état, il créé une seconde variable x, qui n'est pas celle d'entrée, je vais l'appeler x' pour ne pas se mélanger.
En théorie ça ferait : au premier "tour" de for, x' vaut 0 et tu retournes true, au second "tour" de for x' vaut 1 et tu retournes à nouveau true....
En vrai, ça s'arrête au premier "return", donc dès que la longueur de x est 8, ça retourne vrai, "AZERTYUI" retourne vrai.
Pour vérifier que tous les caractères d'une chaine sont 0 ou 1, d'abord c'est cette chaine qu'il faut tester et pas un tableau [0,1], et surtout pour que ce soit vrai, il faut que ce soit vrai pour tous les caractères, alors que pour que ce soit faux, il suffit d'un faux.
Je te montre en pseudo code
est_octect(x) si longueur de x vaut 8 alors pour chaque y dans x alors si y ne vaut pas 0 et y ne vaut pas 1 alors retourner faux 'au premier faux on sort fin pour retourner vrai 'si on arrive là c'est que tout est vrai fin si retourner faux 'si on arrive là c'est que x n'a pas la bonne taille
yg_be
Messages postés
22625
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 mars 2024
1 461
9 oct. 2020 à 22:53
9 oct. 2020 à 22:53
bonjour, dans quel contexte fais-tu cet exercice?
"je n'y arrive pas": que se passe-t-il?
peut-être devrais-tu commencer par des exercices plus simples, qu'en penses-tu?
"je n'y arrive pas": que se passe-t-il?
peut-être devrais-tu commencer par des exercices plus simples, qu'en penses-tu?
Bonjour, cet exercice est imposé en cours, je pense aussi qu'il est compliqué pour un début de programmation.
Ce que je comprends pas c'est dans la ligne :
if est_octet(n) == True and n[0] == 1:
j'ai une erreur dans cette ligne quoique je fasse, mob but étant de savoir si n est un octet et si le nombre" tout a gauche" de n est un 1 ou un 0 . Je pense donc utiliser l'indice [0]
Merci de votre réponse
Ce que je comprends pas c'est dans la ligne :
if est_octet(n) == True and n[0] == 1:
j'ai une erreur dans cette ligne quoique je fasse, mob but étant de savoir si n est un octet et si le nombre" tout a gauche" de n est un 1 ou un 0 . Je pense donc utiliser l'indice [0]
Merci de votre réponse
yg_be
Messages postés
22625
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 mars 2024
1 461
>
test-test
10 oct. 2020 à 06:20
10 oct. 2020 à 06:20
si tu veux apprendre et progresser, il vaut mieux commencer par des exercices plus simples, et continuer ton cours ensuite. te faire aider pour un exercice est, je pense une fausse piste.
dachiasse
Messages postés
1709
Date d'inscription
samedi 12 septembre 2020
Statut
Membre
Dernière intervention
13 mai 2021
148
10 oct. 2020 à 00:07
10 oct. 2020 à 00:07
Salut,
Si tu veux vérifier au-delà d'1 octet, à la ligne 2, j'aurais plutôt mis un "% 8 == 0" au lieu de "== 8".
Dans ton cas, le premier assert ne donnera pas le résultat voulu (False) mais True, parce que dans la définition de ta fonction tu retournes la chaîne de caractères "false" et "false" est différent de False.
Si tu veux vérifier au-delà d'1 octet, à la ligne 2, j'aurais plutôt mis un "% 8 == 0" au lieu de "== 8".
Dans ton cas, le premier assert ne donnera pas le résultat voulu (False) mais True, parce que dans la définition de ta fonction tu retournes la chaîne de caractères "false" et "false" est différent de False.
Bonjour,
merci pour vos conseils, je ne savais meme pas qu'il existait une différence entre False et false...
Apres pour la suite mon problème est à cette ligne
if est_octet(n) == True and n[0] == 1:
j'ai une erreur dans cette ligne quoique je fasse, mon but étant de savoir si n est un octet et si le nombre" tout a gauche" de n est un 1 ou un 0 . Je pense donc utiliser l'indice [0]
merci pour vos conseils, je ne savais meme pas qu'il existait une différence entre False et false...
Apres pour la suite mon problème est à cette ligne
if est_octet(n) == True and n[0] == 1:
j'ai une erreur dans cette ligne quoique je fasse, mon but étant de savoir si n est un octet et si le nombre" tout a gauche" de n est un 1 ou un 0 . Je pense donc utiliser l'indice [0]