[PYTHON] booleen avec condition
Répondre à la discussion
Affichage des résultats 1 à 25 sur 25

[PYTHON] booleen avec condition



  1. #1
    hepta7

    [PYTHON] booleen avec condition


    ------

    Code:
    i=int("1")
    j=bool(False)
    print j
    while i :
        i=raw_input("introduire nbre") 
        if (i > 10) :
            j = True
            print j
        else:
            print j
        j = False
    Bonjour,

    J'ai un probleme avec les booleen, dans mon code; quelque soit le nombre que j'introduis il m'inque True .
    Pourriez-vous me dire svp qu'est-ce qui cloche

    -----

  2. #2
    hepta7

    Re : [PYTHON] booleen avec condition

    .............

  3. #3
    CM63

    Re : [PYTHON] booleen avec condition

    Bonjour,

    Ben déjà quelques remarques:
    i=int("1") : ça, ça veut dire : je définie un nombre entier en l'initialisant à la valeur du code ASCII du caractère "1" (c'est-à-dire 49), je ne pense pas que c'est cela que tu voulais faire, mais plutôt : un entier initialisé à 1, et dans ce cas, il aurait mieux valu faire:

    Code:
    i=int(1)
    Deuxièmement, tu pourrais sortir le print j du test

    Troisièmement, à quoi sert l'affectation j=False à la fin puisque tu ne fais plus aucun print après?

    Donc moi j'aurais plutôt fait (mais je n'ai pas testé et je n'ai toujours pas vu pourquoi cela ne marchait pas, mais tu pourras regarder):

    Code:
    i=int(1) ( ou tout simplement i=1 )
    j=bool(False) (ou tout simplement j=False )
    while i :
        i=raw_input("introduire nbre")
        if (i > 10) :
            j = True
        print j
    Ou encore :

    Code:
    i=1
    j=False
    while i :
        i=raw_input("introduire nbre")
        j = (i > 10)
        print j
    A plus

  4. #4
    CM63

    Re : [PYTHON] booleen avec condition

    A je crois que j'ai compris : raw_input renvoie une chaine, il faut transformer cette chaine en entier, ou plus simplement utiliser input().

    Voici le code qui marche:

    Code:
    i=1
    j=False
    while i :
        i=input("Entrer un nombre : ")
        j = (i > 10)
        print j
    Meilleurs Vœux !
    Dernière modification par CM63 ; 01/01/2015 à 11h36.

  5. A voir en vidéo sur Futura
  6. #5
    hepta7

    Re : [PYTHON] booleen avec condition

    Tout d'abord merci CM63 pour l’intérêt que tu porte à mon problème.
    Finalement t'a mis le doight sur le probleme, c'était bien le raw_input, étant donné qu'on a pas vu le input en cours de python j'ai chercher comment utiliser les notions du prof sans m'écarter de ce qui nous a appris.
    i=in("1") était correct, normalement tout valeur introduite doit être entre guillemet sauf pour le booleen.
    j'ai pris l'habitude de déclarer toute les valeurs en precisant leur types (bool, int,...), comme ca je suis sur de ne pas contrarié mon prof, mais à titre personnel j'aurais fait comme toi
    j'ai rajouter des j=false et print un peut partout dans le code afin de mieux cerner où le probleme se trouve, c'est vrai que c inutil par la suite
    et pour finir j'ai changer mon i=raw_input() par i=int(raw_input)) afin qu'il sache que c'est un entier et c'est à toi que je le doit

  7. #6
    CM63

    Re : [PYTHON] booleen avec condition

    Bonjour,
    Citation Envoyé par hepta7 Voir le message
    Tout d'abord merci CM63 pour l’intérêt que tu porte à mon problème.
    Finalement t'a mis le doight sur le probleme, c'était bien le raw_input, étant donné qu'on a pas vu le input en cours de python j'ai chercher comment utiliser les notions du prof sans m'écarter de ce qui nous a appris.
    Ah ok, dans ce cas il faut transformer en entier la chaine de caractère que renvoie raw_input() .

    Citation Envoyé par hepta7 Voir le message
    i=in("1") était correct, normalement tout valeur introduite doit être entre guillemet sauf pour le booleen.
    C'est pas qu'elle doit, c'est qu'elle peut, int(1) est correct aussi. C'est du polymorphisme.

    Citation Envoyé par hepta7 Voir le message
    j'ai pris l'habitude de déclarer toute les valeurs en precisant leur types (bool, int,...),
    C'est une très bonne habitude à prendre en effet, moi j'ai de mauvaises habitudes, mais quand j'écrit i=10, j'ai toujours à l'esprit: Python va automatiquement créer une variable de type integer et y affecter la valeur 10.
    Mais tu as raison de prendre les bonnes habitudes.

    Citation Envoyé par hepta7 Voir le message
    et pour finir j'ai changer mon i=raw_input() par i=int(raw_input)) afin qu'il sache que c'est un entier et c'est à toi que je le doit
    Tou-à-fait! Maintenant, vous allez peut-être voir en cours comment utiliser quand même input() et gérer les erreurs: notamment si l'utilisateur tape des lettres alors qu'il faut entrer des chiffres: on utilise la gestion des exceptions ! Mais bon je n'en dévoile pas plus, tu verras, Python est un super langage!

    A plus

  8. #7
    hepta7

    Re : [PYTHON] booleen avec condition

    J'ai un autre sousi cette fois:
    Code:
    i=int("1")
    j=int("2")
    k=bool(False)
    l=bool(True)
    while i :
        i=int(raw_input("introduire nbre"))
        if (i>1 and i<1001) :
            k = True
            while (j<i):
                if i/j!=0:
                    l = True and l
                j+=1        
            print k and l
        else:
            k = False
            print k
    quand j'introduit 0 la boucle s’arrête, y'a-t-il moyen de créer une boucle qui s'arrete quand on introduit aucune valeur?
    pour la partie où se trouve la 2eme boucle (while); je ne parviens pas à donner une valeur booleen à "l" (l = True +k).
    En fait le but de cette partie est de pouvoir renvoyer Faulse si le nombre n'est pas premier d'où le calcul i/j != 0 car si il y a un reste il doit affecter False et comme il y a "and" alors il s'uffit d'un False pour determiner si il s'agit d'un nombre premier.

    J'espere que vous avez compris mon raisonnement

  9. #8
    hepta7

    Re : [PYTHON] booleen avec condition

    J'ai changer le code:
    Code:
    i=int("1")
    j=int("2")
    k=bool(True)
    while i :
        i=int(raw_input("introduire nbre"))
        if (i>1 and i<1001):
            while (j<i):
                if (i%j != 0 and k):
                    k = True
                else:
                    k = False
                j+=1        
            print k
        else:
            k = False
            print k
    Mais le probleme reste le même voir message précédant. Merci encore une fois à CM63
    Dernière modification par hepta7 ; 01/01/2015 à 14h15.

  10. #9
    fred1599

    Re : [PYTHON] booleen avec condition

    Bonjour,

    Depuis le début de ce topic, je n'ai encore pas vu l'énoncé de cet exercice...

    Ensuite je vois des choses tellement aberrante comme par exemple c'est le professeur qui nous impose ceci: normalement tout valeur introduite doit être entre guillemet sauf pour le booleen. Alors soit il n'y connait strictement rien au langage python, soit il doit changer de métier...

    La seule chose correcte que j'ai pu voir est en effet l'utilisation de raw_input et surtout pas input... Tout simplement input peut exécuter du code python et n'est surtout pas conseillé. C'est l'équivalent de eval(raw_input(...)) qui peut faire très mal. Donc la bonne solution syntaxiquement parlant était en effet int(raw_input(...)).

    Par contre algorithmiquement parlant, tant qu'on a pas l'énoncé, on peut guère avancer plus.

  11. #10
    hepta7

    Re : [PYTHON] booleen avec condition

    Enoncé:

    Ecrivez une application qui reçoit en entrée un entier positif n (inférieur à 1000) et renvoie True
    en sortie si cette valeur est un nombre premier (false sinon). Par contre, si le nombre n fourni
    en paramètre est nul ou négatif, il faut afficher un message d’erreur et ne rien calculer.
    L’application s’arrêtera si l’utilisateur ne rentre aucun chiffre.
    Recommencez l’application jusqu’à ce que l’utilisateur décide d’arrêter.
    Remarque : rappelons qu’un nombre premier est un chiffre positif qui n’est divisible
    entièrement que par lui-même et par 1. Un nombre x est divisible par un nombre y si et
    seulement si le reste de la division entière de x par y est nul: (x % y == 0)

    Il y a maintes façon de faire remarquer à une personne (avec la bonne volonté d'aider) qu'il n'est pas dans le bon tout en étant aimable et sympathique

    i=in("1") était correct, normalement tout valeur introduite doit être entre guillemet sauf pour le booleen.
    ET ca c'est moi qui l'aie dit, je suis novice je l'admet, mais j'ai remarqué tout de même qu'une valeur est entre guillement et une variable non. Il se peut que je me sois trompé, si j'ai ouvert cette discussion c'est justement parce que je ne m'y connais pas
    Dernière modification par hepta7 ; 01/01/2015 à 14h36.

  12. #11
    fred1599

    Re : [PYTHON] booleen avec condition

    Il y a maintes façon de faire remarquer à une personne (avec la bonne volonté d'aider) qu'il n'est pas dans le bon tout en étant aimable et sympathique
    Difficile d'y avoir le ton tant par sms, que dans un forum, sache juste que je suis de bonne humeur

    ET ca c'est moi qui l'aie dit, je suis novice je l'admet, mais j'ai remarqué tout de même qu'une valeur est entre guillement et une variable non.
    Non ! L'interpréteur python est un genre de petit logiciel si l'on peut dire qui va détecter automatiquement le type de variable que tu entreras.

    rappelons qu’un nombre premier est un chiffre positif qui n’est divisible
    entièrement que par lui-même et par 1. Un nombre x est divisible par un nombre y si et
    seulement si le reste de la division entière de x par y est nul: (x % y == 0)
    Imaginons que l'on est un entier donné, par exemple 63, comment vas-tu tester étape par étape que c'est un nombre premier ? (Attention je ne demande pas en python, mais simplement ta façon de faire comme sur papier)

  13. #12
    hepta7

    Re : [PYTHON] booleen avec condition

    merci Fred1599
    Donc pour 63: je vais diviser 63 par les nombres un à un de 2 à 62 et voir si j'obtiens une division entière sans reste si c'est le cas alors il n'est pas premier.

  14. #13
    fred1599

    Re : [PYTHON] booleen avec condition

    Ok très bien, donc continuons !

    Algorithmiquement parlant, ça pourrait donner ceci

    Code:
    i = 2
    Tant que i inférieur à 63
        Si 63%i vaut 0
            Afficher 63 est pas premier
            Sortir du programme
        i = i + 1
    Afficher 63 est premier
    Comment réécrirais-tu cet algorithme pour n'importe quelle valeur nommée n ?

  15. #14
    hepta7

    Re : [PYTHON] booleen avec condition

    Code:
    i=int("1")
    j=int("2") #declaration de la variable avec 2 comme dans l'algorithme
    k=bool(True)
    while i :
        i=int(raw_input("introduire nbre"))
        if (i>1 and i<1001):
            while (j<i):     #a partir d'ici que commence l'algorithme
                if (i%j = 0 and k):
                    k = False
                else:
                    k = True
                j+=1   
            print k
        else:
            k = False
            print k
    Dans mon cas je doit renvoyer True ou False quand on introduit une valeur

  16. #15
    fred1599

    Re : [PYTHON] booleen avec condition

    Tu vas trop vite, je te demande algorithmiquement, sans passer par python...

    En python, mon algorithme ressemble à ceci

    Code:
    n = int(raw_input("Entrer un entier: ")) # demande utilisateur et transformation de la réponse en entier
    i = 2
    while i < n:
        if n%i == 0:
            print True 
            exit() # Sortie du programme
        i += 1 # équivalent à i = i + 1
    print False
    Par contre j'ai un doute sur la demande de ton professeur. Avez-vous vu les fonctions avec lui et le mot clé def ?

  17. #16
    fred1599

    Re : [PYTHON] booleen avec condition

    Code:
    n = int(raw_input("Entrer un entier: ")) # demande utilisateur et transformation de la réponse en entier
    i = 2
    while i < n:
        if n%i == 0:
            print False 
            exit() # Sortie du programme
        i += 1 # équivalent à i = i + 1
    print True
    oups, j'avais été un peu vite, ne pouvant modifier ci-dessus (bien dommage) je le réécris dans ce post

    @hepta7, ma question tient toujours...

  18. #17
    hepta7

    Thumbs up Re : [PYTHON] booleen avec condition

    il ne faut pas "print True" ou "print False" mais la variable booleen dans mon cas la variable k , ce qui rend la chose plus compliqué parce que dans mon code je n'obtient que True quelque soit la valeur. Finalement j'y suis parvenu grace à Fred1599 (pourquoi ne pas faire plus simple, c'est ce que j'ai compris en voyant le code de Fred). voici le résultat final si ca peu aider d'autre:
    Code:
    i=int("1")
    j=int("2")
    k=bool(False)
    while i :
        i=int(raw_input("introduire nbre"))
        if (i>1 and i<1001):
            while (j<i):
                k = i%j != 0         
                if k == False :           
                    break             
                j+=1
            print k
        else:
            k = False
            print k
        j=2
    Dernière modification par hepta7 ; 01/01/2015 à 16h29.

  19. #18
    hepta7

    Re : [PYTHON] booleen avec condition

    Mais il reste encore un petit problème, quand j'introduit 0 la boucle s’arrête c'est dû à "while i", mais par quoi je pourrais la remplacer afin de pouvoir réintroduire une valeur indéfiniment comme demander dans l'énoncé de mon exercice?

  20. #19
    hepta7

    Re : [PYTHON] booleen avec condition

    Code:
    i=int("1")
    j=int("2")
    k=bool(False)
    while True :
        i=raw_input("introduire nbre")
        if i=="":
            break
        else:
            i=int(i)
            if (i>1 and i<1001):
                while (j<i): 
                    k = i%j != 0         
                    if k == False :           
                        break             
                    j+=1
                print k
            else:
                k = False
                print k
        j=2
    Voila l'exo est fini.
    merci à Fred1599 et CM63

  21. #20
    hepta7

    Re : [PYTHON] booleen avec condition

    petite correction pcq 2 n'était pas considerer premier
    Code:
    i=int("1")
    j=int("2")
    k=bool(False)
    while True :
        i=raw_input("introduire nbre")
        if i=="":
            break
        else:
            i=int(i)
            if (i>1 and i<1001):
                k= i==2             
                while (j<i): 
                    k = i%j != 0         
                    if k == False :           
                        break             
                    j+=1
                print k
            else:
                k = False
                print k
        j=2

  22. #21
    CM63

    Re : [PYTHON] booleen avec condition

    Bonjour,

    Dans l'état actuel de ton programme (enfin si il marche comme tu veux, je n'ai pas testé), lorsque l'utilisateur obtient "False", il ne sait pas si c'est parce qu'il a rentré un nombre non premier ou si c'est parce qu'il a entré un nombre non traité par le programme (un nombre supérieur à 1000 (évidemment, dans la cas présent il sait ce qu'il tape, mais il faut imaginer que le programme pourrait être une routine qui reçoit ses données par un autre moyen)).

    Plutôt que d'imprimer toujours la variable k, il vaudrait mieux imprimer un texte plus explicite: "Le nombre que vous avez entré est premier", "le nombre que vous avez entré ne peut pas être traité par le logiciel car il est supérieur à 1000".

    A plus

  23. #22
    CM63

    Re : [PYTHON] booleen avec condition

    Bonjour,

    Citation Envoyé par hepta7 Voir le message
    petite correction pcq 2 n'était pas considerer premier
    Si, 2 est premier, c'est 1 qui ne l'est pas (encore que), mais bon je relis ton programme.

    A plus

  24. #23
    CM63

    Re : [PYTHON] booleen avec condition

    C'est un peu confu, il faudrait séparer nettement les deux parties du traitement du programme:
    - teste de la validité de la données, arrêt si "", et si l'utilisateur tape un nombre non valable (ou une donnée qui n'est pas un nombre) on affiche un texte indiquant cela et on invite l'utilisateur à taper à nouveau sa donnée,
    - ensuite, traitement proprement dit: on calcule si le nombre est premier ou pas.

    A plus

  25. #24
    hepta7

    Re : [PYTHON] booleen avec condition

    Code:
    i=int("1")
    j=int("2")
    k=bool(False)
    while True :
        i=raw_input("introduire nbre ")
        if i=="":
            break
        else:
            i=int(i)
            if (i>1 and i<1001):
                k= i==2             
                while (j<i): 
                    k = i%j != 0         
                    if k == False :                    
                        break             
                    j+=1
                print k, "si la reponse est faule alors le nombre n'est pas premier"
            else:
                k = False
                print k, "le nombre que vous avez entrer ne peut pas etre traiter par le logiciel car il est superieur a 1000 ou inferieur a 0"
        j=2
    Effectivement, j'ai rajouter un peu de texte, pour pas que l'utilisateur soit pommé. 1 n'est pas premier alors que 2 si, c'est pour cette raison que j'ai ajouté k= i==2 car j commence à 2 directement (si il devait commencait à 1 tous les nombres serait premier avec ce code et comme nous savons que tous nombre est divisible par 1 sauf 2 alors je commence mon décompte "j" à 2, mais 2 est divisible par lui-même et en plus il ne respecte pas la condition du 2eme while j<i donc 2<2 n'est pas valable, enfin bref je l'ai testé et j'en suis content )

  26. #25
    CM63

    Re : [PYTHON] booleen avec condition

    Ok, ça me paraît mieux , après tu peux l'améliorer en sachant qu'il suffit de tester la divisibilité à partir de la racine carré du nombre (l'entier immédiatement supérieur à la racine carré).

Discussions similaires

  1. problème avec TinkerForge avec python
    Par Ken3D dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 02/07/2012, 15h58
  2. Python 2.6 avec Tcl/tk8.6
    Par zarash dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 08/09/2009, 14h49
  3. Problèmes avec Python
    Par invite8f082fcf dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 16/06/2009, 22h51
  4. prob avec python 3.0.1
    Par invite177078b9 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 26/03/2009, 07h50
  5. Execution d'un programme avec python
    Par invite242c100d dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 06/09/2004, 16h47