CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Python : Le jeu du plus ou du moins

Lolopy
Lolopy
Niveau 67
21 novembre 2015 à 19:18:49

Bonjour,

J'ai un problème mon i n'affiche pas le bon nombre d'essais. De plus j'aimerai que si je rentre q alors le programme s'arrête et m'affiche le nombre mystère.

from 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.")
LavaPower
LavaPower
Niveau 6
21 novembre 2015 à 20:00:26

Je pense qu'au début i doit etre égal à 1 et vu que tu a mi int(input()) alors tu ne peux rentrer que des nombres.

Candystand
Candystand
Niveau 10
21 novembre 2015 à 20:12:45

Tu dois faire tes prints dans un if/else, et l'input tu le laisses dans le wile x != a

Athuro83
Athuro83
Niveau 10
21 novembre 2015 à 20:12:48

Je vois plusieurs erreurs dans ton code :
:d) Déjà les 2 boucles while à l'intérieur de ta boucle principale non aucun sens, et c'est sûrement la raison pour laquelle ton compteur n'affiche pas le bon nombre d'essais
Il faut que tu remplaces tes boucles while par un couple de conditions if x > a:[...]; elif x < a: [...]
:d) Il faut plutôt initialiser ton compteur i à 0, sinon il est probable que tu renvoies ton nombre réel d'essais + 1

Pour ce qui est de l'entrée de q pour quitter, je propose à insérer dans ta boucle principale :
x = input("Essayer de trouver le nombre mystère (entre 1 et 100) :") if x == 'q': | break else: | if int(x) > a: | [ton code] | elif int(x) < a: | [Ton code]

Lolopy
Lolopy
Niveau 67
21 novembre 2015 à 22:44:53

x n'est pas un int ?

Athuro83
Athuro83
Niveau 10
21 novembre 2015 à 22:54:48

Non, la fonction input renvoie une chaîne de caractères

Certes avec le code :
x = int(input("Essayer de trouver le nombre mystère (entre 1 et 100) :"))
Tu transformes directement cette chaîne de caractères en entier grâce à la fonction int(), mais si tu essayes alors de taper q puis d'envoyer, ton programme à de fortes chances de renvoyer une erreur (du style NaN si je me souviens bien). Fais le test tu verras

Avec mon code, tu récupères d'abord x sous sa forme de chaîne de caractères, puis tu testes si c'est le caractère de sortie.
Si ce n'est pas le cas, alors on admets que c'est un entier entre 1 et 100 et on peut utiliser sans risques la fonction int()

Lolopy
Lolopy
Niveau 67
21 novembre 2015 à 23:04:32

Ok je vais tester ça. :)

Lolopy
Lolopy
Niveau 67
22 novembre 2015 à 11:35:13

Pourquoi mettre un else suivit de 2 if ?
Pourquoi 'q' et pas "q" ?

Mon programme marchait mais quand j'ai réessayé ca marchait plus pourtant je pense pas avoir touché.
Il m'affiche le message de victoire que si je réussit du premier coup.
Et l'option debugage reste en fonctionnement.

from 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
    if x == "q":
        print("Merci d'avoir joué, le nombre mystère était de",a)
        break
    elif int(x) > a:
        print("Le nombre mystère est plus petit.")
        x = input("Essayer de trouver le nombre mystère (entre 1 et 100) :")
    elif int(x) < a:
        print("Le nombre mystère est plus grand.")
        x = input("Essayer de trouver le nombre mystère (entre 1 et 100) :")
if int(x) == a:
    print("Vous avez trouver le nombre mystère qui est de",a,"au bout de",i,"essais.")
Message édité le 22 novembre 2015 à 11:37:25 par Lolopy
Athuro83
Athuro83
Niveau 10
22 novembre 2015 à 12:50:52

Déjà ce n'est pas le code que je t'ai proposé que tu as fait là :noel:
Car tu as laissé la fonction int() au niveau du nombre mystère, donc ton x == "q" ne risque pas de marcher :(

J'y est réfléchi un peu et j'ai créé un script qui marche, le voici :
http://pastebin.com/PwVXmfKJ
J'suis désolé mais j'arrive pas à me servir des balises de code autrement qu'en monoligne [[sticker:p/1jnh]]

Normalement c'est pas trop mal commenté, et ça fait ce que tu veux.
J'ai juste inversé les valeurs des variables a et x, parce que pour moi x c'est plutôt l'inconnue
Après c'est un programme qui est loin d'être parfait, parce que par exemple il ne vérifie pas que c'est bien un entier qu'on passe à la fonction int(). On ne teste que l'éventualité où c'est le caractère de sortie.

Si tu as des questions sur le code, n'hésite pas surtout :-)

Lolopy
Lolopy
Niveau 67
22 novembre 2015 à 13:41:17

i = 1 car si i = 0 si on trouve du premier coup ca dira qu'on a réussit au bout de 0 essais.

Merci mais tu n'as pas répondu a mes questions :snif:

Athuro83
Athuro83
Niveau 10
22 novembre 2015 à 13:54:28

Le 22 novembre 2015 à 13:41:17 Lolopy a écrit :
i = 1 car si i = 0 si on trouve du premier coup ca dira qu'on a réussit au bout de 0 essais.

Ah, sinon tu peux aussi essayer de remonter l'itération du i avant de demander une valeur à l'utilisateur :(
Mais j'avoue que j'ai jamais su être précis sur ces histoire de compteurs :hap:

Pourquoi mettre un else suivit de 2 if ?

Tu parles de quelle section de code ? :(

Pourquoi 'q' et pas "q" ?

En Python cela importe peu, les 2 font référence à une chaîne de caractères.
Mais d'autres langages font la distinction entre les 2 écritures.

Lolopy
Lolopy
Niveau 67
22 novembre 2015 à 13:56:17
    if a == 'q':            #On vérifie si c'est le caractère de sortie
        abandon = True
    else:                   #Sinon c'est un entier, on peut appliquer int()
        if int(a) < x:
            print("C'est plus grand !")
        elif int(a) > x:
            print("C'est plus petit !")
        else:
            victoire = True

j'ai jamais vu qu'on pouvait écrire dans un else.
Ton compteur i a l'air de marcher et ton programme aussi.

:cimer:

Message édité le 22 novembre 2015 à 13:57:49 par Lolopy
Athuro83
Athuro83
Niveau 10
22 novembre 2015 à 14:01:18

On est pas limités à une seule opération derrière un bloc de condition, et heureusement d'ailleurs :noel:
La seule condition à respecter c'est l'indentation progressive de ton code, mais c'est parfaitement possible de faire des suites de conditions imbriquées et des boucles dans des boucles par exemple

Après je trouve personnellement que trop de blocs de conditions imbriqués peuvent rendre le code très moche, mais bon c'est un avis personnel. (Et souvent il y a moyen de condenser ça dans un seul bloc condition)

EDIT : Mon code marche si l'utilisateur joue le jeu :oui:
Pour produire un code réellement fonctionnel, il faudrait tester si le chaîne fournie par l'utilisateur est soit le caractère de sortie, soit un entier (et le cas contraire, redemander une valeur jusqu'à qu'elle soit correcte) et à la rigueur vérifier que l'entier est bien compris entre 1 et 100 (mais ça c'est moins grave car pas de risque de faire planter le programme)

Message édité le 22 novembre 2015 à 14:05:06 par Athuro83
Lolopy
Lolopy
Niveau 67
22 novembre 2015 à 14:04:35

Le 22 novembre 2015 à 14:01:18 Athuro83 a écrit :
On est pas limités à une seule opération derrière un bloc de condition, et heureusement d'ailleurs :noel:
La seule condition à respecter c'est l'indentation progressive de ton code, mais c'est parfaitement possible de faire des suites de conditions imbriquées et des boucles dans des boucles par exemple

Après je trouve personnellement que trop de blocs de conditions imbriqués peuvent rendre le code très moche, mais bon c'est un avis personnel. (Et souvent il y a moyen de condenser ça dans un seul bloc condition)

Ok cimer chef.

from turtle import *


n = int(input("Longueur du côté (en pixel) :"))
print("Choisissez votre couleur sous forme R,V,B (1 ou 0).")
r = int(input("R = (1 ou 0) :"))
v = int(input("V = (1 ou 0) :"))
b = int(input("B = (1 ou 0) :"))

up()
goto(50,50)
down()

begin_fill()
color(r,v,b)

for i in range(4) :
 forward(n)
 left(90)

for i in range(2) :
 forward(n)
 right(-45)

forward(n)
left(135)

forward(n)
right(45)

forward(n)
right(135)

for i in range(2) :
 forward(n)
 right(45)

end_fill()
ht()
mainloop()

Est ce que c'est bien expliquer l'entrée de la couleur ?

Message édité le 22 novembre 2015 à 14:05:54 par Lolopy
Athuro83
Athuro83
Niveau 10
22 novembre 2015 à 14:16:21

Ben tu donnes les 2 valeurs possibles à entrer par l'utilisateur, donc à moins qu'il soit un peu léger mentalement je vois pas de problème :noel:

Lolopy
Lolopy
Niveau 67
22 novembre 2015 à 14:29:12

Le 22 novembre 2015 à 14:16:21 Athuro83 a écrit :
Ben tu donnes les 2 valeurs possibles à entrer par l'utilisateur, donc à moins qu'il soit un peu léger mentalement je vois pas de problème :noel:

:cimer:

import turtle
from random import choice, randint
from operator import add, sub, mul

a = randint(1,10)
b = randint(1,10)
c = (add, sub, mul)
d = choice(c)

z = d(a, b)

if d == add:
    print("a =",a,"b =",b)
    x = int(input("Quel est le résultat de l'addition entre a et b ?"))
elif d == sub:
    print("a =",a,"b =",b)
    x = int(input("Quel est le résultat de la soustration entre a et b ?"))
elif d == mul:
    print("a =",a,"b =",b)
    x = int(input("Quel est le résultat de la multiplication entre a et b ?"))

if x == z :
    print("C'est trouvé.")
    smiles = turtle.Turtle()
    smiles.penup()
    smiles.goto(-75,150)
    smiles.pendown()
    smiles.circle(10)

    smiles.penup()
    smiles.goto(75,150)
    smiles.pendown()
    smiles.circle(10)

    smiles.penup()
    smiles.goto(0,0)
    smiles.pendown()
    smiles.circle(100,90)

    smiles.penup()
    smiles.setheading(180)
    smiles.goto(0,0)
    smiles.pendown()
    smiles.circle(-100,90)

if x != z :
    print("C'est raté.")
    smiles = turtle.Turtle()
    smiles.penup()
    smiles.goto(-75,150)
    smiles.pendown()
    smiles.circle(10)

    smiles.penup()
    smiles.goto(75,150)
    smiles.pendown()
    smiles.circle(10)

    smiles.penup()
    smiles.goto(0,0)
    smiles.pendown()
    smiles.circle(-100,90)

    smiles.penup()
    smiles.setheading(180)
    smiles.goto(0,0)
    smiles.pendown()
    smiles.circle(100,90)

turtle.mainloop()

Est ce que c'est bien expliquer ?
C'est le dernier!

Athuro83
Athuro83
Niveau 10
22 novembre 2015 à 15:22:46

Désolé le module turtle je connais pas :non:
Il te faut quelqu'un d'autre sur ce coup là :noel:

Lolopy
Lolopy
Niveau 67
22 novembre 2015 à 15:32:49

Le 22 novembre 2015 à 15:22:46 Athuro83 a écrit :
Désolé le module turtle je connais pas :non:
Il te faut quelqu'un d'autre sur ce coup là :noel:

Juste cette partie :

if d == add:
    print("a =",a,"b =",b)
    x = int(input("Quel est le résultat de l'addition entre a et b ?"))
elif d == sub:
    print("a =",a,"b =",b)
    x = int(input("Quel est le résultat de la soustration entre a et b ?"))
elif d == mul:
    print("a =",a,"b =",b)
    x = int(input("Quel est le résultat de la multiplication entre a et b ?"))
Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment