Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/09/2013, à 19:04

rickycissy

Phython petit code très simple qui ne fonctionne pas

Bonjour,

Je débute avec le langage Python. Après avoir suivi un cours sur le net j'en suis arrivé a un petit programme. (Très simple vous en conviendrez...). Après la correction toujours avec ce fameux cours et optimisation de mon mini code il ne fonctionne pas. Je comprend bien ce que j'ai codé (A priori) mais pourtant il me demande toujours de saisir le numéro [nombre_mise = input("Tapez le nombre sur lequel vous voulez miser (entre 0 et 49) : ") ] il ne passe pas a la suite.
Je met le code en dessous pour voir si quelqu'un peu m'aider et m'expliquer mon erreur si possible.

Je vous remercie d'avance pour votre aide.

Richard

import os
from random import randrange
from math import ceil
# Déclaration valeur de départ
argent = 1000 # On a 1000 $ au début du jeu
continuer_partie = True #Booleen qui est vrai tant qu'on doit continuer la partie
print ("Vous vous installez à la table de roulette avec", argent, "$.")
while continuer_partie: 
    # Tant qu'on doit continuer la partie on demande au joueur de saisir le nbre sur lequel il va miser
    nombre_mise = -1
    while nombre_mise < 0 or nombre_mise > 49:
        nombre_mise = input ("Tapez le nombre sur lequel vous voulez miser (entre 0 et 49) : ")
        # On convertit le nombre mise
        try:
            nombre_mise = int (nombre_mise)
        except ValueError:
            print ("Vous n'avez pas saisi de nombre:")
            nombre_mise = -1
            continue
        if nombre_mise < 0:
            print ("Ce nombre est négatif")
        if nombre_mise > 49:
            print ("Ce nombre est supérieur à 49")
# A présent, on sélectionne la somme a miser sur le numéro que le joueur à choisis plus haut
mise = 0
while mise <= 0 or mise > argent:
    mise = input ("Tapez le montant de votre mise")
    # On convertit la mise
    try:
        mise = int (mise)
    except ValueError:    
        print ("Vous n'avez pas saisie de mise")
        mise = -1
        continue
    if mise <= 0 :
            print ("La mise ne peut être nulle ou négative.")
    if mise > argent:
            print ("Vous ne pouvez miser autant, vous n'avez que", argent, "$")
# Le joueur a choisis son numéro et misé, ont fait tourner la roulette
numero_gagnant = randrange (50)
print ("La roulette tourne... ... et s'arrête sur le numéro", numero_gagnant)
# On établit le gain du joueur
if numero_gagnant == nombre_mise:
    print ("Félicitations ! Vous obtenez", 3 * mise, "$ !")
    argent += mise * 3
elif numero_gagnant % 2 == nombre_mise % 2: # Ils sont de la même couleur
    mise = ceil (mise * 0.5)
    print ("Vous avez miser sur la bonne couleur. Vous obtenez", mise, "$")
    argent += mise
else:
    print ("Désolé, vous perdez votre mise")
    argent -= mise
    
# On arrête la partie si le joueur est ruine
if argent <= 0:
    print ("Désole vous êtes sans sous, c'est la fin de la partie")
    continuer_partie = False
else:
    # On affiche l'argent du joueur
    print ("Vous avez a présent", argent, "$")
    quitter = input ("Souhaitez-vous quitter le casino (o/n) ? ")
    if quitter == "o" or quitter == "O":
        print ("Vous quittez le casino avec vos gains.")
        continuer_partie = False

Dernière modification par slasher-fun (Le 20/09/2013, à 19:42)


Serveur SAMBA sur Ubuntu 10.04
GEEXBOX 2.0

C'est au pied du mur que l'on voit le mieux le mur

Hors ligne

#2 Le 20/09/2013, à 19:56

mydjey

Re : Phython petit code très simple qui ne fonctionne pas

Bonjour,

C'est un soucis d'indentation tes boucles :

while continuer_partie: 

et :

while mise <= 0 or mise > argent:

Sont sur le même niveau alors qu'elle ne devraient pas.
A partir de :

# A présent, on sélectionne la somme a miser sur le numéro que le joueur à choisis plus haut

Tu n'as pas indenté alors qu'il faut le faire sur le même niveau d'indentation que le premier while.

Dernière modification par mydjey (Le 20/09/2013, à 20:01)

Hors ligne

#3 Le 21/09/2013, à 08:00

rickycissy

Re : Phython petit code très simple qui ne fonctionne pas

Bonjour,

Merci pour ton aide. Je pensé avoir compris mais en fait j'ai du mal avec les indentations. Aurai tu une explication? Il faut que se soit au même niveau pour être pris en compte? C'est bien ça?

Dans tous les cas, je te remercie pour le temps que tu as pris pour m'aider.

Voici mon code modifié :

import os
from random import randrange
from math import ceil
# Déclaration valeur de départ
argent = 1000 # On a 1000 $ au début du jeu
continuer_partie = True #Booleen qui est vrai tant qu'on doit continuer la partie
print ("Vous vous installez à la table de roulette avec", argent, "$.")
while continuer_partie: 
    # Tant qu'on doit continuer la partie on demande au joueur de saisir le nbre sur lequel il va miser
    nombre_mise = -1
    while nombre_mise < 0 or nombre_mise > 49:
        nombre_mise = input ("Tapez le nombre sur lequel vous voulez miser (entre 0 et 49) : ")
        # On convertit le nombre mise
        try:
            nombre_mise = int (nombre_mise)
        except ValueError:
            print ("Vous n'avez pas saisi de nombre:")
            nombre_mise = -1
            continue
        if nombre_mise < 0:
            print ("Ce nombre est négatif")
        if nombre_mise > 49:
            print ("Ce nombre est supérieur à 49")
# A présent, on sélectionne la somme a miser sur le numéro que le joueur à choisis plus haut
    mise = 0
    while mise <= 0 or mise > argent:
        mise = input ("Tapez le montant de votre mise :")
# On convertit la mise
        try:
            mise = int (mise)
        except ValueError:    
            print ("Vous n'avez pas saisie de mise")
            mise = -1
            continue
        if mise <= 0 :
            print ("La mise ne peut être nulle ou négative.")
        if mise > argent:
            print ("Vous ne pouvez miser autant, vous n'avez que", argent, "$")
# Le joueur a choisis son numéro et misé, ont fait tourner la roulette
        numero_gagnant = randrange (50)
        print ("La roulette tourne... ... et s'arrête sur le numéro", numero_gagnant)
# On établit le gain du joueur
        if numero_gagnant == nombre_mise:
            print ("Félicitations ! Vous obtenez", 3 * mise, "$ !")
            argent += mise * 3
        elif numero_gagnant % 2 == nombre_mise % 2: # Ils sont de la même couleur
            mise = ceil (mise * 0.5)
            print ("Vous avez miser sur la bonne couleur. Vous obtenez", mise, "$")
            argent += mise
        else:
            print ("Désolé, vous perdez votre mise")
            argent -= mise
    
# On arrête la partie si le joueur est ruine
        if argent <= 0:
            print ("Désole vous êtes sans sous, c'est la fin de la partie")
            continuer_partie = False
        else:
            print ("Vous avez a présent", argent, "$")
            quitter = input ("Souhaitez-vous quitter le casino (o/n) ? ")
        if quitter == "o" or quitter == "O":
            print ("Vous quittez le casino avec vos gains.")
            continuer_partie = False

Dernière modification par rickycissy (Le 22/09/2013, à 09:07)


Serveur SAMBA sur Ubuntu 10.04
GEEXBOX 2.0

C'est au pied du mur que l'on voit le mieux le mur

Hors ligne

#4 Le 21/09/2013, à 08:31

pingouinux

Re : Phython petit code très simple qui ne fonctionne pas

Bonjour,
Un bloc (while, for…) doit être indenté, et on sort du bloc lorsqu'on revient à l'indentation qui précédait.
Tu devrais ajouter un break à ce niveau pour sortir de la boucle     while mise <= 0 or mise > argent:

# On arrête la partie si le joueur est ruine
        if argent <= 0:
            print ("Désole vous êtes sans sous, c'est la fin de la partie")
            continuer_partie = False
            break

Hors ligne

#5 Le 21/09/2013, à 09:22

rickycissy

Re : Phython petit code très simple qui ne fonctionne pas

Bonjour,

J'ai un peu de mal avec les indentations... Je vais essayer de me renseigner.
Merci pour ton aide


Serveur SAMBA sur Ubuntu 10.04
GEEXBOX 2.0

C'est au pied du mur que l'on voit le mieux le mur

Hors ligne

#6 Le 21/09/2013, à 10:20

mydjey

Re : Phython petit code très simple qui ne fonctionne pas

Dés le départ ton code est structuré autour de cette boucle (qui englobe tout le reste du code) :

while continuer_partie: 

Si à un moment donné tu ne t'alignes plus sur son indentation, c'est un peu comme si tu "coupais ton code en deux", d'ou les problèmes de fonctionnement...

Dans le code que tu corrigé tu n'as pas indenté les commentaires, je te conseil de le faire ça te permettra de mieux visualiser cette boucle principale.

PS : quand tu postes du code n'oublies pas de le mettre entre les balises code du forum.

Hors ligne

#7 Le 22/09/2013, à 09:04

rickycissy

Re : Phython petit code très simple qui ne fonctionne pas

Bonjour et merci à tous,

Je commence à comprendre un peu mieux, par contre en se qui concerne l’indentation, je ne trouve pas de "cours" à ce sujet, je pense comprendre mais j'aimerai avoir un support pour bien assimiler cette notion. Auriez-vous quelque-chose a me communiquer?

Je vous remercie d'avance.

Richard


Serveur SAMBA sur Ubuntu 10.04
GEEXBOX 2.0

C'est au pied du mur que l'on voit le mieux le mur

Hors ligne

#8 Le 22/09/2013, à 09:46

pingouinux

Re : Phython petit code très simple qui ne fonctionne pas

Voici un lien (en anglais) : Python Reference Manual -> 2.1.8 Indentation

Hors ligne

#9 Le 22/09/2013, à 10:04

rickycissy

Re : Phython petit code très simple qui ne fonctionne pas

pingouinux a écrit :

Je te remercie, je regarde ça avec attention.


Serveur SAMBA sur Ubuntu 10.04
GEEXBOX 2.0

C'est au pied du mur que l'on voit le mieux le mur

Hors ligne

#10 Le 22/09/2013, à 19:53

HP

Re : Phython petit code très simple qui ne fonctionne pas

mydjey a écrit :

Dés le départ ton code est structuré […]

C'est du beau code spaghetti… de là à dire qu'il est structuré…


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#11 Le 23/09/2013, à 08:06

rickycissy

Re : Phython petit code très simple qui ne fonctionne pas

HP a écrit :
mydjey a écrit :

Dés le départ ton code est structuré […]

C'est du beau code spaghetti… de là à dire qu'il est structuré…

Bonjour,

Que veux tu c'est le temps d'apprendre... wink


Serveur SAMBA sur Ubuntu 10.04
GEEXBOX 2.0

C'est au pied du mur que l'on voit le mieux le mur

Hors ligne