Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

programme python du + ou -

Posté par
aaron35
27-08-18 à 17:18


Salut à tous

voici ce que je dois programmer


Programmez un petit jeu où vous devrez découvrir un nombre entre 1 et 100 choisi au hasard par l'ordinateur grâce à l'instruction randint(1,100) isuue du module random. Vous proposerez un nombre et l'ordinateur vous répondra "Trop grand" ou "Trop petit" jusqu'à ce que vous ayez trouvé le bon nombre, auquel cas il vous dira "Bravo". Il faudra aussi écrire à la fin le nombre de tentatives.



voici ce que j'ai fait :

import random

nombre = input("Devinez le nombre:")
nombrsecret = random.randint(100,500)
cpt=1
while nombre<nombresecret or nombre>nombresecret:
    if nombre<nombresecret:
        print "Plus grand!"
    elif nombre>nombresecret:
        print "Plus petit!"
    nombresecret = input("essaye encore!:")
    cpt=cpt+1
print "Gagné en %d coup(s)" %(cpt)



est ce correct ?


merci d'avance

Posté par
aaron35
re : programme python du + ou - 27-08-18 à 17:22

nombre = input("Devinez le nombre:")
nombrsecret = random.randint(1,100)
cpt=1
while nombre<nombresecret or nombre>nombresecret:
    if nombre<nombresecret:
        print "Plus grand!"
    elif nombre>nombresecret:
        print "Plus petit!"
    nombresecret = input("essaye encore!:")
    cpt=cpt+1
print "Gagné en %d coup(s)" %(cpt)

Posté par
aaron35
re : programme python du + ou - 27-08-18 à 17:42

je l'ai un peu améliorer

import random

nombre = input("Devinez le nombre:")
nombrsecret = random.randint(100,500)
cpt=1
while nombre<nombresecret or nombre>nombresecret:
    if nombre<nombresecret:
        print( "Plus grand!")
    elif nombre>nombresecret:
        print ("Plus petit!" )
    nombresecret = input("essaye encore!:")
    cpt=cpt+1
print "Gagné en %d coup(s)" %(cpt)

Posté par
luzak
re : programme python du + ou - 27-08-18 à 18:19

Bonsoir !
Non !
Il ne faut pas modifier la variable "nombresecret" à l"intérieur de la boucle.
Pour un nouvel essai tu dois lire un nouveau nombre et l'affecter à la variable "nombre".

La condition de contrôle de la boucle pourrait être plus simplement "nombresecret!=nombre" .

De plus si tu initialises "cpt" à 1 tu vas annoncer un "coup de trop" à la fin de ton jeu.

C'est assez simple pour que tu puisses faire "tourner à la main "  ton algorithme et voir que les réponses ne sont pas les bonnes.

Posté par
verdurin
re : programme python du + ou - 27-08-18 à 19:43

@aaron35.
Je me permet de te rappeler ce que je t'ai dis sur la balise code.

nombre = input("Devinez le nombre:")
nombrsecret = random.randint(1,100)
cpt=1
while nombre<nombresecret or nombre>nombresecret:
    if nombre<nombresecret:
        print "Plus grand!"
    elif nombre>nombresecret:
        print "Plus petit!"
    nombresecret = input("essaye encore!:")
    cpt=cpt+1
print "Gagné en %d coup(s)" %(cpt) 


est plus lisible que :

nombre = input("Devinez le nombre:")
nombrsecret = random.randint(1,100)
cpt=1
while nombre<nombresecret or nombre>nombresecret:
    if nombre<nombresecret:
        print "Plus grand!"
    elif nombre>nombresecret:
        print "Plus petit!"
    nombresecret = input("essaye encore!:")
    cpt=cpt+1
print "Gagné en %d coup(s)" %(cpt)

Posté par
aaron35
re : programme python du + ou - 27-08-18 à 21:16

si c'est faux pourriez vous bien m'écrire le bon code svp ?

Posté par
aaron35
re : programme python du + ou - 27-08-18 à 22:13

je ne comprends pas ce qui ne vas pas dans mon code

Posté par
aaron35
re : programme python du + ou - 27-08-18 à 22:27

Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:19:30) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> nbr = input("Devinez le nombre:")
nbrsecret = random.randint(1,100)
cpt=0
while nombre<nombresecret
      if nombre<nombresecret:
       print ("Plus grand!")
    if nombre>nombresecret:
        print ("Plus petit!")
    if nombresecret=nombre
        print ("bravo!")
    nombresecret = input("Essayez encore!:")
    cpt=cpt+1
print "Gagné en %d coup(s)" %(cpt)

est ce que c'est bon cette fois ci ?car je ne vois rien de bizarre
        

Posté par
cocolaricotte
re : programme python du + ou - 27-08-18 à 22:44



Tu compares "nombre" qui n'est pas initialisé ni saisi donc inconnu  avec quelque chose de connu ! Comment veux tu que cela fonctionne ?

Une précision : avant d'écrire des lignes de programme dans un langage, il faut commencer par rédiger un algorithme qui traduit les étapes que réalisera le programme.

As tu réfléchi à la première étape : l'algorithme ?

Posté par
cocolaricotte
re : programme python du + ou - 27-08-18 à 22:47

Et quand tu auras écrit l'algorithme il faudra le tester avec plusieurs valeurs avant de le traduire dans un langage !

Posté par
cocolaricotte
re : programme python du + ou - 27-08-18 à 22:52

L'ordinateur choisit un nombre

Je propose un nombre
Il y a 2 possibilités :
- le nombre choisi par l'ordinateur est plus grand que celui que j'ai donné
- le nombre choisi par l'ordinateur est plus petit que celui que j'ai choisi

Quel indice le donne l'ordinateur ?

Je répète l'opération jusqu'à quelle issue ?

Que doit afficher le programme ? Comment obtenir ces résultats ?

Que de questions qui doivent obtenir des réponses sans erreurs.

Posté par
aaron35
re : programme python du + ou - 27-08-18 à 23:21

Quel indice le donne l'ordinateur ? si le nombre choisit est plus grand que le nombre mystère on affiche print

Je répète l'opération jusqu'à quelle issue ? jusqu'a ce que le nombre mystere soit trouvé

Que doit afficher le programme ? Comment obtenir ces résultats ? je ne sais pas

Que de questions qui doivent obtenir des réponses sans erreurs.

Posté par
cocolaricotte
re : programme python du + ou - 27-08-18 à 23:28

Bin tu réfléchis

C'est pas pas impossible quand on réfléchit un peu

Posté par
cocolaricotte
re : programme python du + ou - 27-08-18 à 23:31

J'aurais dû écrire  :  Quel indice te donne l'ordinateur ?

Posté par
aaron35
re : programme python du + ou - 27-08-18 à 23:41

je ne sais toujours pas pour moi mon code est tout à fait correct  mais là vous m'embrouiller

Pourriez vous me donner le code source python pour ce programme svp

Posté par
cocolaricotte
re : programme python du + ou - 27-08-18 à 23:59

Je peux faire un phrase du genre  : un lapin a mangé mon frigidaire

Cette phrase est correcte grammaticalement parlant   Au niveau sémantique elle est plus douteuse.

On peut faire des expressions Python correctes au niveau syntaxe mais qui n'ont aucun sens !

Posté par
verdurin
re : programme python du + ou - 28-08-18 à 01:06

On peut essayer un pseudo-code.

Donner un titre
Tirer le nombre_mystere au hasard entre, par exemple 1 et 100
Initialiser le compteur à 0
Initialiser X à une valeur ne pouvant pas être le nombre_mystere ( ici 0 par exemple )

Tant que X n'est pas le nombre_mystere  :
     augmenter le compteur de 1
     demander une valeur X pour le nombre_mystere
     si X= nombre_mystere :
          afficher " bravo, vous avez gagné en " compteur " coups "
          
     si X<nombre_mystere :
          afficher "trop petit"
      si X>nombre_mystere :    
          afficher "trop grand"
     % fin de la boucle " tant que "

Posté par
luzak
re : programme python du + ou - 28-08-18 à 08:07

aaron35 @ 27-08-2018 à 22:13

je ne comprends pas ce qui ne vas pas dans mon code

Je te l'ai dit : si tu redéfinis la variable "nombre-mystère" en relisant une nouvelle valeur, ta valeur aléatoire initiale est perdue.
Comme tu n'as pas changé la variable nombre tu vas comparer la première valeur demandée perpétuellement à une nouvelle entrée.
Il suffit que le "joueur" entre le même nombre deux fois pour gagner.
Encore une fois, fais tourner à la main ce que tu as écrit et tu verras.

De plus, le "compte de coups" affiché est faux, tu as mal initialisé la variable cpt.

Posté par
aaron35
re : programme python du + ou - 28-08-18 à 09:57

je ne vois toujours pas les erreurs de mon code.Pourriez vous svp me donner le code en python?

Posté par
aaron35
re : programme python du + ou - 28-08-18 à 10:32

j'ai réessayer mais ça marche pas



nombre = input("Devinez le nombre:")
nombrsecret = random.randint(1,100)
cpt=1
while nombre<nombresecret or nombre>nombresecret:
    if nombre<nombresecret:
        print "Plus grand!"
    elif nombre>nombresecret:
        print "Plus petit!"
    nombresecret = input("essaye encore!:")
    cpt=cpt+1
print "Gagné en %d coup(s)" %(cpt)


je ne vois pas ni ne comprends mes erreurs.

Posté par
aaron35
re : programme python du + ou - 28-08-18 à 10:58

bon  j'essaye autrement

import random

nbr_secret = random.randint(1,100)
invite = 'propose un nombre'
while true
           nbr_joueur = raw_input(invite)
           if nbr_secret== int(nbr_joueur:
               print('bravo?')
               break
            elif nbr_secret   > int(nbr_joueur):
                 print('trop petit')
             else
                       print('trop grand')


par contre je ne sais comment faire pour indiquez en combien de coups on a trouvé nbr_secret

Posté par
aaron35
re : programme python du + ou - 28-08-18 à 11:21

nbr_secret = random.randint(1,100)
invite = 'propose un nombre'
while true:
           nbr_joueur = raw_input(invite)
           if nbr_secret== int(nbr_joueur:
               print('bravo?')
               break
            elif nbr_secret   > int(nbr_joueur):
                 print('trop petit')
             else
                       print('trop grand')

Posté par
sanantonio312
re : programme python du + ou - 28-08-18 à 12:44

Bonjour,
Comme te l'a dit fort justement cocolaricotte que je salue au passage, avant d'écrire du code, il est bon de traduire la question posée dans un langage plus simple.

Citation :
while true

Par exemple, ne s'arrête jamais.
Tu dois clarifier les différentes étapes:
- Initialiser le nombre "aléatoire"
- Quand demander à l'utilisateur d'entrer une proposition
- Quels tests faire
- Quelles suites donner à chacun des tests
....

Posté par
sanantonio312
re : programme python du + ou - 28-08-18 à 12:54

verdurin, que je salue également,  a fait le plus difficile à 1h06...

Posté par
aaron35
re : programme python du + ou - 28-08-18 à 13:42

je réessaye encore une fois mais je n'y arrive pas





Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:19:30) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> n = random.randint(0,100)
appreciation = "?"
while True:
    var = input("Entrez un nombre")
    var = int(var)
    if var < n :
        appreciation = "trop bas"
        print(var, appreciation)

    else :
        appreciation = "trop haut"
        print(var, appreciation)
    if var == n:
        appreciation = "bravo !"
        print(var, appreciation)
        break

Posté par
aaron35
re : programme python du + ou - 28-08-18 à 13:49

je ne comprends rien

Posté par
aaron35
re : programme python du + ou - 28-08-18 à 14:07

import random 

nombre = input("Devinez le nombre:") 
nombrsecret = random.randint(1,100) 
cpt=0 
while nombre<nombresecret or nombre>nombresecret: 
    if nombre<nombresecret: 
        print "Plus grand!" 
    elif nombre>nombresecret: 
        print "Plus petit!" 
    nombresecret = input("essaye encore!:") 
        if nombre= nombresecret
print( "Gagné en %d coup(s)" %(cpt)
    cpt=cpt+1 

Posté par
aaron35
re : programme python du + ou - 28-08-18 à 16:53

est ce que c'est correct? cette fois ci

Posté par
aaron35
re : programme python du + ou - 28-08-18 à 17:32



print("\t\t\t\t=== LE JEU DU PLUS OU MOINS ===\n\n")
 

nombreMystere = randint(1, 100)
while nombrePropose != nombreMystere:
    print("Quel est le nombre ?")
    nombrePropose = input()
    nombrePropose = int(nombrePropose)
    if nombrePropose < nombreMystere:
        print("C'est trop petit !\n")
    elif nombrePropose > nombreMystere:
        print("C'est trop grand !\n")
    else:
        print("Félicitations, vous avez trouvé le nombre mystère !!!\n")]



à part l'indentation je vois pas ou c'est mauvais

Posté par
luzak
re : programme python du + ou - 28-08-18 à 18:24

Non !
Lors du premier test la variable "nombrePropose" n'est pas initialisée.
Dès que tu initialises "nombre Mystere", AVANT le "while" il faut donner une valeur intéressante (je te suggère 0) à la variable "nombrePropose"...

Posté par
aaron35
re : programme python du + ou - 28-08-18 à 18:56

nombrePropose = input()
    nombrePropose = int(nombrePropose)

comment ça pas initialisé



while nombrePropose != nombreMystere:
    print("Quel est le nombre ?")

là il faut inverser les instructions je penses

Posté par
aaron35
re : programme python du + ou - 28-08-18 à 19:52


j'essaye déjà de coder le jeu plus ou moins mais je ne sais pas comment parvenir à afficher le nombre de tentatives quand on a trouver le nombre mystere



import random
>>> 
>>> nbr_secret = random.randint(1,100)
>>> invite = 'propose un nombre : '
>>> while true:
	nbr_joueur = raw_input(invite)
	if nbr_secret ==int(nbr_joueur):
		print('bravo vous avez trouver')
		break
	elif nbr_secret > int(nbr_joueur):
		print('trop petit')
	else:
		print('trop grand')

Posté par
luzak
re : programme python du + ou - 29-08-18 à 08:06

Citation :
nombrePropose = input()
    nombrePropose = int(nombrePropose)
comment ça pas initialisé

La variable "nombre_Propose" n' a reçu aucune valeur lors du premier  test dans "while".
..................................................
Citation :
mais je ne sais pas comment parvenir à afficher le nombre de tentatives quand on a trouver le nombre mystere

Tu initialises, avant le premier "while" une variable "compte" à 0.

Dans la boucle, à chaque lecture de "nbr_joueur", tu incrémentes "compte".
En même temps que "print bravo...", tu affiches la valeur de "compte" (avant le break), s'il te plaît !

Posté par
aaron35
re : programme python du + ou - 29-08-18 à 10:35

ça serait plus simple que vous m'écriviez le code svp

Posté par
luzak
re : programme python du + ou - 29-08-18 à 10:51

Plus simple ?
1. Je ne pratique pas le "python"
2. Il n'est pas question ici de rédiger les devoirs.

On t'a donné suffisamment d'indications pour t'en sortir : il suffisait de corriger ce que tu avais écrit sans faire de grands changements.

Posté par
aaron35
re : programme python du + ou - 29-08-18 à 12:16

Je crois que j'ai compris les petits changements à faire voici le code :

import random
>>> 
>>> nbr_secret = random.randint(1,100)
>>> invite = 'propose un nombre : '
          cpt=0
>>> while true:
	nbr_joueur = raw_input(invite)
	if nbr_secret ==int(nbr_joueur):
		print('bravo vous avez trouver')
		break
	elif nbr_secret > int(nbr_joueur):
		print('trop petit')
	else:
		print('trop grand')
         cpt = cpt + 1

Posté par
aaron35
re : programme python du + ou - 29-08-18 à 18:08


j'ai essayé une autre méthode et je pense qu'enfin c'est la bonne réponse


random import 
i = 1
a = randint(1,100)
x = int(input("Essayer de trouver le nombre mystère (entre 1 et 100) :"))
while x != a:
    i = 1
    while x > a:
        print("Le nombre mystère est plus petit.")
        x = int(input("Essayer de trouver le nombre mystère (entre 1 et 100) :"))
    while x < a:
        print("Le nombre mystère est plus grand.")
        x = int(input("Essayer de trouver le nombre mystère (entre 1 et 100) :"))
if x == a:
    print("Vous avez trouver le nombre mystère qui est de",a,"au bout de",i,"essais.")

Posté par
aaron35
re : programme python du + ou - 29-08-18 à 18:18

ce n'est pas encore le bon  code ?

Posté par
verdurin
re : programme python du + ou - 29-08-18 à 22:04

Essaye de le faire fonctionner au lieu de demander s'il marche.
Tu verra bien ce qui se passe.

Posté par
aaron35
re : programme python du + ou - 30-08-18 à 07:42

j'ai essayer de le lancer mais la console (cmd) s'ouvre et se referme aussi tot

Posté par
aaron35
re : programme python du + ou - 30-08-18 à 09:55

et c'est pareil pour tout les autre petits programme reprenant le jeux du +ou - que j'ai modifié.

la console windows s'ouvre et se referme aussi tot

Répondre à ce sujet

Seuls les membres peuvent poster sur le forum !

Vous devez être connecté pour poster :

Connexion / Inscription Poster un nouveau sujet
Une question ?
Besoin d'aide ?
(Gratuit)
Un modérateur est susceptible de supprimer toute contribution qui ne serait pas en relation avec le thème de discussion abordé, la ligne éditoriale du site, ou qui serait contraire à la loi.


Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !