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

Faire une opération aléatoire en python

_Pytchoun
_Pytchoun
Niveau 67
16 novembre 2015 à 19:16:16

Bonjour,

Je veux faire une opération aléatoire entre 2 nombres soit +, - ou * comment faire voila mon code actuel

from random import *
from turtle import *

a = randint(1,100)
b = randint(1,100)

z = a + b

x = input("Choisissez votre réponse :")

if x == z :


if x != z :

Donc la z doit faire + * ou - entre a et b.

Message édité le 16 novembre 2015 à 19:20:22 par _Pytchoun
mgman57
mgman57
Niveau 10
16 novembre 2015 à 19:37:43

Je connais pas trop python mais je pense que tu dois simplement introduire une nouvelle variable (un entier) que tu peux appeler op, op prend pour valeur randint(1,4) et ensuite tu fais l'opération suivant la valeur de op. :ok:

Schiffer
Schiffer
Niveau 10
16 novembre 2015 à 19:46:38
from random import choice, randint

op = ('+', '*', '-')
x = str(randint(1, 100))
y = str(randint(1, 100))
print(eval(x + ' ' + choice(op) + ' ' + y))
Message édité le 16 novembre 2015 à 19:47:44 par Schiffer
mgman57
mgman57
Niveau 10
16 novembre 2015 à 19:55:47

Oui... Alors je sais que python est un langage de script, mais je pense que l'évaluation d'expression comme ça à la volée c'est pas une bonne pratique :(

_Pytchoun
_Pytchoun
Niveau 67
16 novembre 2015 à 20:01:19

Ca ne marche pas

_Pytchoun
_Pytchoun
Niveau 67
16 novembre 2015 à 20:04:42
from random import *
from turtle import *

a = randint(1,100)
b = randint(1,100)

z = a + b
z = a - b
z = a * b

x = int(input("Choisissez votre réponse :"))

if x == z :
    print("Bien")

if x != z :
    print("Raté")

Z doit être aléatoirement un de ses trois calcul.

Schiffer
Schiffer
Niveau 10
16 novembre 2015 à 20:29:40

Le 16 novembre 2015 à 19:55:47 mgman57 a écrit :
Oui... Alors je sais que python est un langage de script, mais je pense que l'évaluation d'expression comme ça à la volée c'est pas une bonne pratique :(

C'est ton avis, je le respecte :ok:

Le 16 novembre 2015 à 20:01:19 _Pytchoun a écrit :
Ca ne marche pas

T'es sûr ?
https://repl.it/B07C

_Pytchoun
_Pytchoun
Niveau 67
16 novembre 2015 à 20:41:39

Je comprends pas tout.
C'est quoi eval ? Je veux pas que z soit affiché je veux qu'il soit stocker pour savoir si ma réponse x == z.
Et str c'est quoi ?

Schiffer
Schiffer
Niveau 10
16 novembre 2015 à 20:48:58

eval() evalue une expression, par exemple si tu fais z = eval('1+2'), z vaut 3
str() c'est pour convertir en string

_Pytchoun
_Pytchoun
Niveau 67
16 novembre 2015 à 21:03:36

pq ne pas faire tout simplement z = 1+2 ?
C'est quoi un string ?

LavaPower
LavaPower
Niveau 6
16 novembre 2015 à 21:17:57

Le 16 novembre 2015 à 21:12:19 andryrdev a écrit :
un string c'est une culotte mais avec une ficelle derrière :coeur:

C'était... NUL

mgman57
mgman57
Niveau 10
16 novembre 2015 à 21:28:42

hihi quel comique ce andryrdev :coeur:

Grimmys
Grimmys
Niveau 19
16 novembre 2015 à 21:33:59

Les blagues de merde de programmeurs quoi... :hap:

_Pytchoun on ne peut pas parce que notre expression est variable, on a pas quelque chose de déterminé comme " 1+2 ", mais plutôt un calcul dont on ne connait pas l'''opérateur''.

Reprenons l'exemple avec l'opération sur deux termes connus : 1 et 2 ( car finalement, peu importe qu'ils soient connus ou non : on peut très bien faire z = x + y sans passer par eval() ).

Si l'on veut faire une addition, on écrit : " z = 1 + 2 ", une multiplication : " z = 1 * 2 " et une soustraction : " z = 1 - 2 ". Ok, sauf que là, on ne sait pas d'avance quelle opération devra être utilisée : c'est relatif à un choix au hasard.
Et dans ce cas là, on ne peut pas faire " z = 1 choice(op) 2 ", Python ne peut pas exécuter ça, car pour lui ce que renverra choice(op) c'est une chaîne de caractères ( = string ).
Du coup ben on est obligé de passer par la fonction eval()...

Je te conseille de suivre un cours là, car franchement ne pas savoir ce qu'est un string c'est plutôt problématique.... Normalement c'est ce qu'on voit en premier, avant même d'aborder les conditions et l'aléatoire qui intervient plus tardivement. :hap:

Delgan
Delgan
Niveau 10
16 novembre 2015 à 22:38:26

Utiliser eval() c'est un peu beaucoup dégueulasse quand même. :(

Si tu veux faire les choses proprement et correctement, tu devrais utiliser la bibliothèque operator : https://docs.python.org/3/library/operator.html :ok:

Grâce à ça, tu pourras utiliser +, - et * comme des fonctions. Tu pourras donc les mettre dans une liste et en choisir une aléatoirement.

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

operators = (add, sub, mul)

a = randint(1,100)
b = randint(1,100)
op = choice(operators)

result = op(a, b)
Message édité le 16 novembre 2015 à 22:42:29 par Delgan
Grimmys
Grimmys
Niveau 19
16 novembre 2015 à 22:59:04

Oui random.randint(x, y) prend l'intervalle [x ; y[.

Sinon du coup eval() est une fonction useless ? Dans aucun cas elle s'avère préférable ? :(

_Pytchoun
_Pytchoun
Niveau 67
17 novembre 2015 à 18:23:58

Bonjour moi je voudrais que ce soit entre 1 inclus et 100 inclus.

_Pytchoun
_Pytchoun
Niveau 67
17 novembre 2015 à 18:44:42

Du coup

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

operators = (add, sub, mul)

a = randint(1,100)
b = randint(1,100)
op = choice(operators)

result = op(a, b)

C'est bon ca ?

Message édité le 17 novembre 2015 à 18:47:12 par _Pytchoun
_Pytchoun
_Pytchoun
Niveau 67
17 novembre 2015 à 18:46:18

Le 17 novembre 2015 à 18:41:04 BotToBeAlive a écrit :
Il faut écrire 100 programmes différents et les lancer aléatoirement en cliquant sur un différent à chaque fois

What ?

_Pytchoun
_Pytchoun
Niveau 67
17 novembre 2015 à 19:07:02

Du coup au final j'ai

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

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

z = d(a, b)
print(z)

x = int(input("Choisissez votre réponse :"))

if x == z :
    print("Bien")

if x != z :
    print("Raté")
Grimmys
Grimmys
Niveau 19
17 novembre 2015 à 19:50:37

Nan mais BotToBeAlive troll hein, faut pas tout prendre au 1er degrés ici. :hap:

Alors il me semble - tu peux toujours vérifier sur la documentation - que randint exclu la seconde valeur que tu donnes, du coup, tu devrais faire randint(1,101).

Sinon j'ai du mal à comprendre ton programme... Pourquoi afficher z et le demander juste après ?
Et encore, il y a tellement de valeurs possibles différentes... T'es sûr que l'utilisateur puisse espérer trouver ? :hap:

Dernière remarque : Pense à nommer tes variables avec des mots qui ont une signification et non simplement une lettre, sur un gros programme, ça t'aide pas mal à te retrouver.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment