Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Exercice][Novice]Le jeu du plus ou moins

Anonyme
22 juillet 2017 à 15:00:18

Pas grand chose à dire sauf sur la ligne 6, où on préférera

while continuer:



  • Partager sur Facebook
  • Partager sur Twitter
22 juillet 2017 à 20:37:23

oldProgrammer a écrit:

Pas grand chose à dire sauf sur la ligne 6, où on préférera

while continuer:



Hello,

Merci pour le commentaire. Pas besoin du ==True donc ? 



  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
22 juillet 2017 à 20:39:15

Aderin a écrit:

oldProgrammer a écrit:

Pas grand chose à dire sauf sur la ligne 6, où on préférera

while continuer:



Hello,

Merci pour le commentaire. Pas besoin du ==True donc ? 

Oui!

  • Partager sur Facebook
  • Partager sur Twitter
6 novembre 2017 à 15:31:11

Bonjour, j'ai un petit probleme avec mon code que je viens de faire et je ne vois pas où est mon erreur ? Pouvez-vous m'aider ?

import os
from math import ceil
from random import randrange

continuer = True
difficulty = input("Choisissez une difficulté entre 1 (facile) et 5 (très difficile) :")
if difficulty = 1:
	count = 15
	alea = randrange(50)
	print ("votre nombre maximum est de 50")
if difficulty = 2:
	count = 10
	alea = randrange(75)
	print ("Votre nombre maximum est de 75")
if difficulty = 3:
	count = 7
	alea = randrange(85)
	print ("Votre nombre maximum est de 85")
if difficulty = 4:
	count = 5
	alea = randrange(90)
	print ("votre nombre maximum est de 90")
if difficulty = 5:
	count = 3
	alea = randrange(105)
	print ("Votre nombre maximum est de 105")
while continuer:
	nb = input("Choisissez un nombre entre 0 et le maximum: ")
	nb = int(nb)
	if count == 0:
		print("Vous avez perdu :(")
		break
	if nb == alea:
		print("Vous avez trouvé le bon nombre, Félicitation !")
		continuer = False
	if nb > alea:
		print("Votre nombre est trop grand !")
		count = count - 1
		print ("il vous reste ", count, "nombre de cout")
		continue
	if nb < alea:
		print("Votre nombre est trop petit !")
		count = count - 1
		print ("il vous reste ", count, "nombre de cout")
		continue
os.system("Pause")



  • Partager sur Facebook
  • Partager sur Twitter
6 novembre 2017 à 16:26:34

Ligne 7, 11, 15, 19, 23: == et non =. Et input renvoie une chaîne de caractères, donc la comparaison (aux lignes précédemment citées) ne sera jamais validée. Il faut convertir l'entrée utilisateur en entier (comme tu l'as fait en ligne 29)

ArthurDelagroux1 a écrit:

j'ai un petit probleme


Soit plus explicite la prochaine fois. Donne l'erreur que te renvoie python et la ligne où ça se produit.

Sinon ton bloc de conditions (lignes 7 à 26) peut avantageusement être remplacé par un conteneur:

from random import randrange


#Soit en utilisant une liste
niveaux = [(15, 50), (10, 75), (7, 85), (5, 90), (3, 105)]

choix_niveau = int(input("Choix du niveau (1 à 5): "))

#Génère une erreur si l'utilisateur n'entre pas un nombre compris entre 1 et 5
counter, max_nb = niveaux[choix_niveau - 1]
nb_random = randrange(max_nb)

print("Votre nombre maximum est de {}".format(max_nb))




#Soit en utilisant un dictionnaire
niveaux = {"1": (15, 50), "2": (10, 75), "3": (7, 85), "4": (5, 90), "5": (3, 105)}

choix_niveau = input("Choix du niveau (1 à 5): ")  #Conversion plus nécessaire

#Si l'utilisateur n'entre pas un nombre compris entre 1 et 5, une valeur par
#défaut est donnée (et donc évite de faire planter le programme)
counter, max_nb = niveaux.get(choix_niveau, (15, 50))
nb_random = randrange(max_nb)

print("Votre nombre maximum est de {}".format(max_nb))
print(counter, nb_random)

-
Edité par Olygrim 6 novembre 2017 à 16:27:17

  • Partager sur Facebook
  • Partager sur Twitter
Précepte: Le mieux est l'ennemi du bien
7 novembre 2017 à 10:25:09

Merci Olygrim, j'essaye maintenant de faire en sorte que lorsque je rentre rien au niveau de l'étape du choix du nombre, ça me renvoie au choix du nombre, car la actuellement quand je fait juste entrer sans rien écrire ça ferme le programme. J'ai déja essayer :
if nb == "\n":
      continue

et :

if nb == "":
      continue

mais cela ne marche pas, ça ferme quand meme le programme et je ne vois pas pourquoi, je n'ai pas d'erreur qui s'affiche

  • Partager sur Facebook
  • Partager sur Twitter
7 novembre 2017 à 11:00:59

Si, tu as forcément une erreur mais pour la voir il ne faut pas double-cliquer sur le fichier mais l'exécuter à partir de ton invite de commande (cmd sur windows, Terminal sur mac). Il est fondamental d'avoir accès aux erreurs sinon tu ne pourra pas progresser.

Ici, ton erreur se situe en ligne 29. Si l'utilisateur n'entre rien (ou autre chose qu'un nombre entier) et bien la conversion va planter (car python ne peux pas convertir n'importe quoi en nombre):

#Renvoie une ValueError
int("")
int("hello")
int("3.4")


#Fonctionne
int("4")
int("-2")


Donc il faut soit utiliser un bloc try/except:

while continuer:
    nb = input("Choisissez un nombre entre 0 et le maximum: ")
    try:
        nb = int(nb)
    except ValueError:
        print("Vous devez entrer un nombre entier")
        continue


Soit utiliser les méthodes des chaînes de caractères:

while continuer:
    nb = input("Choisissez un nombre entre 0 et le maximum: ")
    if nb.isdigit():
        nb = int(nb)
    else:
        print("Vous devez entrer un nombre entier")
        continue


Pour avoir la liste des méthodes d'un objet, c'est la fonction dir. Et pour avoir un descriptif détaillé, c'est la fonction help:

dir(str)  #Liste les attributs des chaînes

help(str.upper)  #Explique ce que fait la méthode 'upper'
help(str.isdigit)  #Explique ce que fait la méthode 'isdigit'

-
Edité par Olygrim 7 novembre 2017 à 11:02:19

  • Partager sur Facebook
  • Partager sur Twitter
Précepte: Le mieux est l'ennemi du bien
13 novembre 2017 à 13:41:08

here is my try

from random import randrange
from datetime import datetime
import os
import time

now = datetime.now()
clear = lambda: os.system('cls')
clear()
print(" ")
print ('%s/%s/%s %s:%s:%s' % (now.month, now.day,now.year,now.hour, now.minute, now.second))
print(" ")

print(""">>> RULES :
            A Number depending on the difficultie you choose is generated
            your objective is to guess it in the minimum
            number of attempts.

                    **note: you can use "cls" to clear the screen**

            ========> hope you enjoy :)\n\n""")
############################### Defenitions ##########################################
def scl():
    if str(userI) == "cls":
        clear()
        print(">>>>> Screen Cleared <<<<<")
def first_guess():
    global userI
    userI=input("\nMake your First Guess ======> ")
    
    try: int(userI)
    except :
        print("!!!!!!!! Input a Valid Number !!!!!!!!!!!!")
        scl()
        first_guess()

    return userI

def less(userI):
    
    if int(userI)<rand:
        print("\n>>>>>>>>>>>{ Go MORE }>>>>>>>>>>>>>>")
    if int(userI)>rand:
        print("\n<<<<<<<<<<<{ Go LESS }<<<<<<<<<<<<<")
def guess():
    global userI
    userI=input("\nTry to Guess ======> ")
    
    try: int(userI)
    except :
        print("!!!!!!!! Input a Valid Number !!!!!!!!!!!!")
        scl()
        guess()
def win():
        if int(userI)==rand:
            print("\n>>>> You Won <<<<\n"+ "\n You needed <<<<<<{ "+ str(i)+" }>>>>>> tries to make it ." )
#####################################################################################
input("==========={ Press any Key To Start }=============")
clear()
####################################
diff = 0
while str(diff) not in ("1","2","3"):

    diff = input(
"""  >>>> Choose Difficultie:   1) 1 ==> 100
                             2) 1 ==> 500
                             3) 1 ==> 1000\n""")
    if diff not in ("1","2","3"):
        print("choose difficultie from 1 ==> 3\n")

    else: 
        diff = int(diff)
        
        print("\n you chose: " +" difficulie "+str(diff))


if int(diff) == 1:
    num_range = 100
elif int(diff) == 2:
    num_range = 500
elif int(diff) ==3:
    num_range = 1000
##################################
rand = int(randrange(0,num_range))
i=0
userI=0
print("\n ====={ a number from 0 ==> "+ str(num_range)+" is generated }=====")
print (str(rand))
first_guess()
CompI= userI
less(CompI)
win()
def game():
    global userI
    global rand
    global i
    while int(userI) != rand:
        print ("\n================={ Try N° "+str(int(i)+1)+" }=================")
        guess()
        CompI= userI
        less(CompI)
        i+=1
        win()
        

    reponse = input("Do you want to restart ? ")
    if str(reponse) in ("yes","y","oui","o"):
        clear()
###########################################
        diff = 0
        while str(diff) not in ("1","2","3"):

            diff = input(
            """  >>>> Choose Difficultie:   1) 1 ==> 100
                             2) 1 ==> 500
                             3) 1 ==> 1000\n""")
            if diff not in ("1","2","3"):
                print("choose difficultie from 1 ==> 3\n")

            else: 
                diff = int(diff)
        
            print("\n you chose: " +" difficulie "+str(diff))


        if int(diff) == 1:
            num_range = 100
        elif int(diff) == 2:
            num_range = 500
        elif int(diff) ==3:
            num_range = 1000
##############################################
        
        rand = int(randrange(0,num_range))
        print("\n ====={ a number from 0 ==> "+ str(num_range)+" is generated }=====")
        print (str(rand))
        i=1
        userI=0
        first_guess()
        CompI= userI
        less(CompI)
        win()
        game()

game()
input("""Press any Key To Exit.
                            >>>>> By {{ Med16}} <<<<<""")
exit()

i m still a beginner so please tell me if there are any errors or ways to improve this script 

:)

-
Edité par MedAzizLahdheri 13 novembre 2017 à 13:46:23

  • Partager sur Facebook
  • Partager sur Twitter
8 avril 2018 à 12:54:16



-
Edité par oscarguenier 8 avril 2018 à 12:59:55

  • Partager sur Facebook
  • Partager sur Twitter
1 novembre 2018 à 3:17:53 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


6 avril 2019 à 1:37:47

Bonjour tout le monde.  Je dois faire dans le cadre d'un cours un programme en Python qui ressemble beaucoup à cet exemple. Soit de trouver un nombre généré aléatoirement entre une certaine étendue.  Ce qui me pose problème, c'est que au départ je dois préciser dans le constructeur de ma classe qu'elle sera l'étendue entre les deux nombres et par la suite  généré un nombre aléatoire dans ce même étendu.

 Voici où j'en suis présentement.  Pour les besoins de la cause je fait un print en précisant entre quel et quel nombre le joueur  doit essayer de deviner.

from random import randrange

class Application:

nombreADeviner = None # propriété indéfinie

# constructeur
def __init__(self, nombreDeChance):

self.nombreDeChance = nombreDeChance



# Méthode pour deviner le nombre

def Execute(self):

nombreADeviner = randrange(1, 21)

while self.nombreDeChance > 0 :

print("Choisissez un nombre entre 1 et 20")
nombreGuess = int(input())

if nombreGuess < self.nombreADeviner:
print (nombreGuess, "est plus petit que le nombre à deviner.")

if nombreGuess > nombreADeviner:
print (nombreGuess, "est plus grand que le nombre à deviner.")

if nombreGuess == nombreADeviner:
print ("BRAVO le nombre à deviner était : ", nombreADeviner, ". Vous avez GAGNÉ!!!")

self.nombreDeChance -=1
print ("Il vous reste encore ", self.nombreDeChance, " chances.")

if self.nombreDeChance == 0:
print ("DÉSOLÉ le nombre à deviner était : ", nombreADeviner, ". Vous avez PERDU!!!")
  • Partager sur Facebook
  • Partager sur Twitter
23 mai 2019 à 15:54:54 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


27 juin 2019 à 16:57:58

Comment mettre une boucle avec tkinter ????
  • Partager sur Facebook
  • Partager sur Twitter
27 juin 2019 à 17:58:08

Ah ah ah. Créer plutôt un sujet au lieu d'en déterrer un comme ça. Un vrai sujet à toi, avec une question, un problème, et du code inséré via la fonctionnalité </>.

-
Edité par digammaF 27 juin 2019 à 17:58:23

  • Partager sur Facebook
  • Partager sur Twitter

typage structurel ftw