Problème sur mon programme python
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Problème sur mon programme python



  1. #1
    manutpe69

    Problème sur mon programme python


    ------

    Bonjour, je suis en terminale S spécialité ISN et pour la fin d'année je dois coder un petit jeu en python. Pour le moment j'ai l'essentiel de mon programme qui est codé, il est même fonctionnel actuellement et il s'agit d'un jeu de roulette type casino. Le problème est qu'à un moment donné on me demande de saisir une mise.
    - Si la mise est supérieur à l'argent que je possède j'ai réussi à coder un mécanisme permettant d'afficher un message qui m'informe de mon erreur et de revenir en arrière.
    -En revanche si je saisis des caractères qui ne sont pas des entiers (car la mise est défini comme un entier) le programme plante. J'aimerai trouver un mécanisme permettant la même chose que dans l'exemple précédent : je voudrais qu'un message d'erreur soit affiché puis que le programme me demande de resaisir la mise.


    ci-joint le début de mon programme :


    Code:
    #Z_CASINO
    #données
    import os
    from random import randrange
    from math import ceil
    bourse = 500 
    print('vous vous dirigez vers la table de la roulette avec '+str(bourse)+' $')
    
    
    continuer_la_partie = True
    
    while continuer_la_partie:
        if bourse <= 0:
            print('vous êtes ruinés ! du balai !')
            continuer_la_partie=False
            break
        couleur=0
        lance=randrange(50)
        mise=int(input("misez une somme : "))
        if mise > bourse:
            print("vous n'avez pas autant d'argent...")
            continue
    J'espère que vous pourrez m'apporter votre aide et vous remercie d'avance.

    -----
    Dernière modification par JPL ; 16/03/2017 à 19h37. Motif: Ajout de la balise Code (#) pour garder l'indentation

  2. #2
    CM63

    Re : Problème sur mon programme python

    Bonjour,

    Il suffit de vérifier que la personne a entré des chiffres. Pour cela il faut utiliser la fonction isdigit de la classe chaine de caractères. Je ne t'explique pas la syntaxe, tu dois pouvoir la retrouver.

    Allez, je te montre ce que j'ai essayé:

    Code:
    >>> a="34"
    >>> a.isdigit()
    True
    >>> a="gasdf"
    >>> a.isdigit()
    False
    >>>
    Dernière modification par CM63 ; 16/03/2017 à 18h45.

  3. #3
    manutpe69

    Re : Problème sur mon programme python

    Salut, merci pour ta réponse ! Je vais regarder tout ça et je te dirais si j'ai réussi.

  4. #4
    manutpe69

    Re : Problème sur mon programme python

    Rebonjour, j'ai fais quelques recherches sur la fonction isdigit du coup et je t'avoue ne pas avoir résolu mon problème. En fait j'ai l'impression que cette fonction teste si des entiers sont présent dans une chaîne de caractère je me trompe ? Du coup je ne vois pas comment je peux m'en servir dans mon cas. Sinon mon professeur m'avais dit qu'il fallait utiliser try et except pour résoudre mon problème. Tu as peut-être une idée de ce dont il s'agit ?

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

    Re : Problème sur mon programme python

    Bonjour,
    Pour moi, l'instruction try est à utiliser pour les erreurs non prévisibles, c'est à dire pour éviter les plantages catastrophiques. C'est utilisé dans les programmes compliqués.
    Dans votre cas, il s'agit d'une vérification normale. Et isdigit convient parfaitement à votre besoin.

  7. #6
    LeMulet

    Re : Problème sur mon programme python

    Après une petite recherche sur internet, il apparait que ce soit un problème très classique :
    Voici un exemple avec une des solutions possible :
    Code:
    entree = raw_input("Veuillez entrer un nombre")
     
    if entree.isNumeric():
        print "Le double de ce nombre est" , str(int(entree) * 2)
    else:
        print "Vous devez entrer un nombre!"
    D'après ce que j'en ai compris, raw_input assure que la chaine ne soit pas interprété (avec erreur lors de la conversion automatique, si on avait juste utilisé input()),
    mais reste une chaine, que l'on peut traiter ensuite sois-même.
    Ici, on vérifie que la chaine est numérique avec la fonction .isNumeric()
    Puis on peut la convertir (si la chaine est compatible "numerique") avec le "moule" int(ma_chaine).
    Dernière modification par LeMulet ; 18/03/2017 à 12h33.
    Bonjour, et Merci.

  8. #7
    CM63

    Re : Problème sur mon programme python

    Citation Envoyé par manutpe69 Voir le message
    Rebonjour, j'ai fais quelques recherches sur la fonction isdigit du coup et je t'avoue ne pas avoir résolu mon problème. En fait j'ai l'impression que cette fonction teste si des entiers sont présent dans une chaîne de caractère je me trompe ? Du coup je ne vois pas comment je peux m'en servir dans mon cas. Sinon mon professeur m'avais dit qu'il fallait utiliser try et except pour résoudre mon problème. Tu as peut-être une idée de ce dont il s'agit ?
    Si c'est pour mettre en application try et except, le prof a du t'expliquer comment faire, et même faire un exemple, non?

  9. #8
    manutpe69

    Re : Problème sur mon programme python

    Tout d'abord merci pour votre aide ! Sinon j'ai trouvé une solution assez simple qui fonctionne avec try et except il fallait juste y penser. Pour ce qui est de la fonction 'raw_input' il me semble qu'elle n'existe plus sur Python !
    Je vous poste le code que j'ai écris pour résoudre le problème au cas où ça vous intéresserait :

    Code:
    #Z_CASINO
    #données
    import os
    from random import randrange
    from math import ceil
    bourse = 500 
    print('vous vous dirigez vers la table de la roulette avec '+str(bourse)+' $')
    
    
    continuer_la_partie = True
    
    while continuer_la_partie:
        if bourse <= 0:
            print('vous êtes ruinés ! du balai !')
            continuer_la_partie=False
            break
        couleur=0
        lance=randrange(50)
        mise = -1
        while mise <= 0 or mise > bourse:
        	mise=input("misez une somme : ")
        	try:
        		mise = int(mise)
        	except ValueError:
        		print('Vous devez entrez un nombre !')
        		mise = -1
        		continue
        	if mise <= 0:
        		print('Vous devez miser une somme supérieure à 0 $ !')		
        	if mise > bourse:	
            	print("Vous n'avez pas autant d'argent...")

  10. #9
    CM63

    Re : Problème sur mon programme python

    He ben voila, en gros tu as compris le principe du try except. Pour raw_input, oui c'est possible, mais comme tu as fait c'est bien, tu fais la saisie avec input, donc tu récupères une chaîne de caractère , et tu ne traites l'exception que lors de la conversion en entier.

Discussions similaires

  1. Programme Python
    Par coockie13 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 29/01/2017, 07h50
  2. [Python] subprocess, lancer un autre programme avec python
    Par Loupsio dans le forum Programmation et langages, Algorithmique
    Réponses: 10
    Dernier message: 30/11/2016, 18h56
  3. Programme en python
    Par Isis-mirka dans le forum Programmation et langages, Algorithmique
    Réponses: 16
    Dernier message: 01/12/2014, 21h29
  4. Programme python
    Par THESO dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 20/09/2013, 21h52
  5. petit problème dans mon programme python
    Par souchi6 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 05/01/2013, 14h13