Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème débutant sur le TP ZCasino

Problème débutant sur le TP ZCasino

    15 novembre 2017 à 20:34:06

    Bonjour,

    Je débute sur python et je suis arrivé au TP ZCasino.

    Je l'ai fait, mais il se ferme directement même après l'avoir mis en pause...

    Je l'ai donc lancé avec PowerShell, et apparemment, il y a une erreur de syntaxe à la ligne 48(ou 49) à "else".

    Le problème, c'est que je ne vois pas pourquoi il y a une erreur, le code:

    #-*-coding:Latin-1 -*
    import os
    from random import randrange
    from math import ceil
    
    continuer_partie=True
    agent=1000
    
    print("Vous vous installer à la table de roulette avec",argent,"$")
    
    while continuer_partie:
    	
    	argent_mise=-9
    	while argent_mise>argent or argent_mise<=0:
    		argent_mise=input("Quel somme d'argent souhaitez vous miser?:")
    		if argent_mise>argent:
    			print("Vous ne pouvez pas miser autant, vous avez seulement",argent,"$")
    			nombre_mise=-4
    		if argent_mise<0:
    			print("Vous avez misé une somme inferieur ou égale à 0")
    			nombre_mise=-5
    		try:
    			nombre_mise=int(nombre_mise)
    		except:
    			print("Le somme saisit n'est pas valide")
    			argent_mise=-5
    
    	nombre_mise=-2
    	while nombre_mise<=0 or nombre_mise>30:
    		nombre_mise=input("Quel nombre souhaitez vous miser?(entre 1 et 30 compris):")
    		if nombre_mise<=0:
    			print("Vous avez miser une somme inférieur ou égale à 0")
    			nombre_mise=-5
    		if nombre_mise>30:
    			print("Vous avez misé un nombre suppérieur à 30")
    			nombre_mise=-5
    		try:
    			nombre_mise=nombre_mise(int)
    		except:
    			print("Le nombre saisit n'est pas valide")
    			nombre_mise=-3
    	nombre_choisit=randrange(1,30)
    	if nombre_mise==nombre_choisit:
    		argent+=argent_mise*3
    		print("Vous avez misé sur le bon nombre, vous gagnez le montant de votre mise multiplié par 3:",argent_mise*3)
    	elif nombre_mise%2==nombre_choisit%2: 
    		argent+=ceil(argent_mise/2)
    		print("Vous avez misé sur la bonne couleur, vous gagnez le montant de votre mise divisé par 2:",ceil(argent_mise/2)
    	else:
    		print("Vous n'avez ni misé sur le bon nombre, ni sur la bonne couleur, vous perdez votre mise.")
    		argent-=argent_mise
    	print("Vous avez maintenant",argent,"$")
    a=True	
    	while a:
    		continuer_partie=input("Voulez vous continez la partie?(Oui/Non)")
    		if continuer_partie.lower()=="oui":
    			continuer_partie=True
    		elif continuer_partie.lower()=="non":
    			continuer_partie=False
    		else:
    			print("Vous n'avez pas saisit de réponse valide")
    			continue
    
    


    Si il y a d'autre erreur, merci de m'en faire part:D

    Merci

    • Partager sur Facebook
    • Partager sur Twitter
      15 novembre 2017 à 22:26:06

      tu as oublié une parenthèse pour le print ligne 48 non par hasard ?

      et sinon tu peux remplacer le while a ligne 54 par un while True directement il me semble

      -
      Edité par CodingFR 15 novembre 2017 à 22:28:02

      • Partager sur Facebook
      • Partager sur Twitter

      Développeur python amateur et fan de jeux-vidéos !

        15 novembre 2017 à 22:31:04

        Bonsoir ,

        regardez la fin de la ligne juste au-dessus du else, il manque quelque chose ;)

        • Partager sur Facebook
        • Partager sur Twitter
          16 novembre 2017 à 18:54:22

          Merci, j'ai en effet fait une erreur d'étourderie.

          Mais il y a d'autres problèmes:-°...

          Quand je le lance(toujours avec PowerShell),ça me met(à la ligne 14) que ">" n'est pas supporté entre des "str" et des "int", 

          j'ai mis argent_mise=int(argent_mise) au cas ou, mais ça me fait la même erreur...

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            16 novembre 2017 à 19:14:32

            Ligne 7 c'est pas agent, mais argent.

            Une fois terminé, envoi le code mis à jour...

            • Partager sur Facebook
            • Partager sur Twitter
              16 novembre 2017 à 20:19:02

              Merci oldprogrammer, le code :

              #-*-coding:Latin-1 -*
              import os
              from random import randrange
              from math import ceil
              
              continuer_partie=True
              argent=1000
              print("Vous vous installer à la table de roulette avec",argent,"$")
              
              while continuer_partie:
              	
              	argent_mise=-9
              	while argent_mise>argent or argent_mise<=0:
              		argent_mise=input("Quel somme d'argent souhaitez vous miser?:")
              		try:
              			nombre_mise=int(nombre_mise)
              		except:
              			print("Le somme saisit n'est pas valide")
              			continue
              		if argent_mise>argent:
              			print("Vous ne pouvez pas miser autant, vous avez seulement",argent,"$")
              			nombre_mise=-4
              		if argent_mise<0:
              			print("Vous avez misé une somme inferieur ou égale à 0")
              			nombre_mise=-5
              
              	nombre_mise=-2
              	while nombre_mise<=0 or nombre_mise>30:
              		nombre_mise=input("Quel nombre souhaitez vous miser?(entre 1 et 30 compris):")
              		if nombre_mise<=0:
              			print("Vous avez miser une somme inférieur ou égale à 0")
              			nombre_mise=-5
              		if nombre_mise>30:
              			print("Vous avez misé un nombre suppérieur à 30")
              			nombre_mise=-5
              		try:
              			nombre_mise=nombre_mise(int)
              		except:
              			print("Le nombre saisit n'est pas valide")
              			nombre_mise=-3
              	nombre_choisit=randrange(1,30)
              	if nombre_mise==nombre_choisit:
              		argent+=argent_mise*3
              		print("Vous avez misé sur le bon nombre, vous gagnez le montant de votre mise multiplié par 3:",argent_mise*3)
              	elif nombre_mise%2==nombre_choisit%2: 
              		argent+=ceil(argent_mise/2)
              		print("Vous avez misé sur la bonne couleur, vous gagnez le montant de votre mise divisé par 2:",ceil(argent_mise/2))
              	else:
              		print("Vous n'avez ni misé sur le bon nombre, ni sur la bonne couleur, vous perdez votre mise.")
              		argent-=argent_mise
              
              	print("Vous avez maintenant",argent,"$")
              
              	while True:
              		continuer_partie=input("Voulez vous continez la partie?(Oui/Non)")
              		if continuer_partie.lower()=="oui":
              			continuer_partie=True
              		elif continuer_partie.lower()=="non":
              			continuer_partie=False
              		else:
              			print("Vous n'avez pas saisit de réponse valide")
              			continue
              • Partager sur Facebook
              • Partager sur Twitter
                16 novembre 2017 à 23:30:23

                Je débute aussi mais je crois que tu devrais mettre argent_mise et argent en (int) non ?

                argent = 1000
                argent = (int)argent

                Juste pour pouvoir calculer avec cette variable, mais comme je l'ai dis je débute alors il est possible que je ne raconte que de la merde ; )

                Bonne journée ou soirée je sais pas.

                • Partager sur Facebook
                • Partager sur Twitter
                  17 novembre 2017 à 8:49:07

                  EliasTahar a écrit:

                  Je débute aussi mais je crois que tu devrais mettre argent_mise et argent en (int) non ?


                  Non, ce sont déjà des entiers.

                  Le problème est en ligne 17: on ne met J-A-M-A-I-S un except tout seul, car sinon on risque de passe sous silence toutes les erreurs (même celles qui pourraient nous être utile, comme c'est le cas ici). Il faut donc T-O-U-J-O-U-R-S préciser l'erreur qu'on veut capturer.

                  Ici, l'erreur qu'on veut capturer est une ValueError:

                  a = "abc"
                  a = int(a)  #-> ValueError


                  Il faut donc le préciser dans le except:

                  argent_mise=input("Quel somme d'argent souhaitez vous miser?:")
                  try:
                      ...
                  except ValueError:
                      ...     


                  En faisant ça, ça va t'afficher une nouvelle erreur (qui était masquée auparavant à cause du except) et que tu pourras facilement corriger (si tu réfléchis un tout petit peu ;)).

                  Mais après correction, tu vas retomber sur la même erreur que précédemment (si tu n'entres pas un entier). C'est simplement dû au fait que tu ne réinitialises pas la valeur de argent_mise avant de reboucler (donc elle pointe toujours vers la chaîne de caractères entrée par l'utilisateur).

                  PS: Puisque 0 est une valeur non acceptée - que ce soit pour argent_mise ou pour le nombre_mise - il serait plus propre d'initialiser ces deux variables à 0, plutôt qu'avec des nombres lambda comme -9, -4, -5, -2, qui non pas du tout de sens. Et dans le cas où 0 est une valeur acceptée, alors on initialise plutôt à -1 (ou 1).

                  .

                  Moi11MoiMoi11Moi a écrit:

                  ça me met(à la ligne 14) que ">" n'est pas supporté entre des "str" et des "int"


                  Attention à bien faire correspondre la ligne de l'erreur avec le code présenté sur OC. Ici l'erreur est en ligne 13 ;)
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Précepte: Le mieux est l'ennemi du bien
                    23 novembre 2017 à 18:46:09

                    Merci de vos aides.

                    J'ai un peu modifier la structure, et ça marche presque...

                    Lorsqu'il me demande quel nombre je veux miser(entre 1 et 30) et que je répond un trop grand nombre, des caracères,ect, il m'affiche bien "le nombre saisit n'est pas valide" mais il m'affiche aussi ça quand je met un nombre valide entre 1 et 30.

                    J'ai beaucoup relu le code mais je ne vois pas pourquoi ça le fait...

                    le code:

                    #-*-coding:Latin-1 -*
                    import os
                    from random import randrange
                    from math import ceil
                    
                    continuer_partie=True
                    argent=1000
                    print("Vous vous installer à la table de roulette avec",argent,"$")
                    
                    while continuer_partie:
                    	
                    	argent_mise=-9
                    	try:
                    		argent_mise=input("Quel somme d'argent souhaitez vous miser?:")
                    		argent_mise=int(argent_mise)
                    	except ValueError:
                    		print("Le somme saisit n'est pas valide")
                    		continue
                    	if argent_mise>argent:
                    		print("Vous ne pouvez pas miser autant, vous avez seulement",argent,"$")
                    		continue
                    	if argent_mise<=0:
                    		print("Vous avez misé une somme inferieur ou égale à 0")
                    		continue
                    	a=True
                    	nombre_mise=-2
                    	while a==True:
                    		try:
                    			nombre_mise=input("Quel nombre souhaitez vous miser?(entre 1 et 30 compris):")
                    			nombre_mise=nombre_mise(int)
                    			a=False
                    		except:
                    			print("Le nombre saisit n'est pas valide")
                    			continue
                    		if nombre_mise<=0:
                    			print("Vous avez miser une somme inférieur ou égale à 0")
                    			a=True
                    			continue
                    		if nombre_mise>30:
                    			print("Vous avez misé un nombre suppérieur à 30")
                    			a=True
                    			continue
                    	nombre_choisit=randrange(1,30)
                    	if nombre_mise==nombre_choisit:
                    		argent+=argent_mise*3
                    		print("Vous avez misé sur le bon nombre, vous gagnez le montant de votre mise multiplié par 3:",argent_mise*3)
                    	elif nombre_mise%2==nombre_choisit%2: 
                    		argent+=ceil(argent_mise/2)
                    		print("Vous avez misé sur la bonne couleur, vous gagnez le montant de votre mise divisé par 2:",ceil(argent_mise/2))
                    	else:
                    		print("Vous n'avez ni misé sur le bon nombre, ni sur la bonne couleur, vous perdez votre mise.")
                    		argent-=argent_mise
                    
                    	print("Vous avez maintenant",argent,"$")
                    
                    	while True:
                    		continuer_partie=input("Voulez vous continez la partie?(Oui/Non)")
                    		if continuer_partie.lower()=="oui":
                    			continuer_partie=True
                    		elif continuer_partie.lower()=="non":
                    			continuer_partie=False
                    		else:
                    			print("Vous n'avez pas saisit de réponse valide")
                    			continue

                    Merci

                    -
                    Edité par Tymo2 23 novembre 2017 à 18:47:01

                    • Partager sur Facebook
                    • Partager sur Twitter
                      23 novembre 2017 à 20:30:40

                      ligne 30, nombre_mise=nombre_mise(int)

                      c'est pas plutôt nombre_mise=int(nombre_mise)

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Développeur python amateur et fan de jeux-vidéos !

                        24 novembre 2017 à 18:49:55

                        Merci à tous de votre aide le programme fonctionne

                        -
                        Edité par Tymo2 24 novembre 2017 à 19:54:08

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Problème débutant sur le TP ZCasino

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown