Page 1 of 1

Besoin d'un coup de pouce en Python !

Unread postPosted: 03 Mar 2014, 10:58
by Harry-Boo
Bonjour la communauté !
Il y a de cela quelques semaines, nous nous sommes dits avec des amis que programmer sur nos calculatrices en cours, c'est sympa, mais ne peut-on pas y voir plus grand ?
Nous nous sommes donc mis à la recherche d'un langage facile d'accès, et nous avons trouvé le Python.

Après une petite semaine de familiarisation, je me suis décidé et ai voulu créer un petit programme (fort simple, mais il faut bien un début à tout !)

Au bout de quelques minutes me sont venues ces premières lignes :
Code: Select all
import math
argent=100
while argent>0:
   print('''Il vous reste''',argent,'''$''')
   mise = input('''Entrez la valeur de votre mise : ''')
   if mise>=argent:
      mise=argent
      argent=0
   else :
      argent -= mise
   print('''Il vous reste''',argent,'''$''')
   choix = input('''Choisissez le numéro entre 0 et 49 sur lequel vous souhaitez miser : ''')
      if int(choix) <= 0 :
         choix = 0
         couleur_choix = ''' noir'''
      elif choix >= 49:
         choix = 49
         couleur_choix = ''' rouge'''
      else
         if choix%2 == 0:
            couleur_choix=''' noir'''
         elif choix%2 != 0 :
            couleur_choix=''' rouge'''
   print('''Vous avez misé''',mise,'''$ sur le''',choix,couleur_choix)
   import random
   resultat = random.randint(0,49)
      if resultat%2 == 0:
         couleur_resultat = ''' noir'''
      elif resultat%2 != 0 :
         couleur_resultat = '''rouge'''
   print('''Vous avez misé sur le ''',choix,couleur_choix)
   print('''Il fallait miser sur le ''',resultat,couleur_resultat)
      if choix == resultat :
         print('''Bravo, vous avez choisi le bon numéro ! :D''')
         print('''Vous remportez donc : ''',(mise+(3*mise)),''' $ (soit 3 fois votre mise plus votre mise de départ) '''
         argent = argent + mise + (3*mise)
         print('''Vous avez donc maintenant ''',argent,'''$''')
      elif couleur_choix == couleur_resultat :
         print('''Bravo, vous avez choisi la bonne couleur ! :D''')
         print('''Vous remportez donc : ''',math.ceil(mise+(0.5*mise)),''' $ (soit 0.5 fois votre mise plus votre mise de départ) '''
         argent = argent + mise + math.ceil(0.5*mise)
         print('''Vous avez donc maintenant ''',argent,'''$''')
      else :
      print('''Désolé, mais vous avez perdu :('''
      print('''Vous avez donc maintenant ''',argent,'''$''')

N'ayant jamais programmé avec Python auparavant, je ne savais pas comment celui-ci allait réagir, et il se trouve qu'il a détesté mon travail xD

Après une heure de modification, j'ai abouti à ceci :
Code: Select all
import math
argent=100
while argent>0:
   print('''Il vous reste''',argent,'''$''')
   mise = input('''Entrez la valeur de votre mise : ''')
   mise = int(mise)
   if mise>=argent:
      mise=argent
      argent=0
   elif mise < argent :
      argent -= mise   
   print('''Il vous reste''',argent,'''$''')
   choix = input('''Choisissez le numéro entre 0 et 49 sur lequel vous souhaitez miser : ''')
   choix=int(choix)
   if choix <= 0 :
         choix = 0
         couleur_choix = ''' noir'''
   if choix >= 49 :
      choix = 49
      couleur_choix = ''' rouge'''
   else :
         if choix%2 == 0:
            couleur_choix=''' noir'''
         else :
            couleur_choix=''' rouge'''
   print('''Vous avez misé''',mise,'''$ sur le''',choix,couleur_choix)
   import random
   resultat = random.randint(0,49)
   resultat=int(resultat)
   if resultat%2 == 0:
         couleur_resultat = ''' noir'''
   elif resultat%2 != 0 :
      couleur_resultat = '''rouge'''
   print('''Il fallait miser sur le ''',resultat,couleur_resultat)
   if choix == resultat :
         print('''Bravo, vous avez choisi le bon numéro ! :D''')
         print('''Vous remportez donc : ''',(mise+(3*mise)),''' $ (soit 3 fois votre mise plus votre mise de départ) '''
         mise *= 4
         argent += mise
         print('''Vous avez donc maintenant ''',argent,'''$''')
   elif couleur_choix == couleur_resultat :
         print('''Bravo, vous avez choisi la bonne couleur ! :D''')
         print('''Vous remportez donc : ''',math.ceil(mise+(0.5*mise)),''' $ (soit 0.5 fois votre mise plus votre mise de départ) '''
         mise *= 1.5
         mise=math.ceil(mise)
         argent += mise
         print('''Vous avez donc maintenant ''',argent,'''$''')
   else :
      print('''Désolé, mais vous avez perdu :('''
      print('''Vous avez donc maintenant ''',argent,'''$''')


Le début marche parfaitement, mais j'ai un problème à partir de la ligne 35 (
if choix == resultat :
)

Si quelqu'un veux bien m'aider ^^

PS : Bisam m'a conseillé de poster ici, et peut-être pourrait-on faire un Questions/Réponses sur le Python, c'est à dire que dès que quelqu'un à une question ou un prog' qui foire, il peut le poster ici, de manière à ce que l'on puisse s'entraider.

Merci d'avoir lu et d'avoir répondu ! :D

Re: Besoin d'un coup de pouce en Python !

Unread postPosted: 03 Mar 2014, 11:14
by Bisam
Tout d'abord, ton "import random" n'a rien à faire au milieu de la boucle "while". Il devrait être avant.
Ca ne sert à rien d'importer le module à chaque fois...

Ensuite, tes "if ... elif..." seraient bien plus efficaces si tu mettais à la place des "if .... else" car cela évite de faire le même test 2 fois.

En 3ème lieu, les triples guillemets ne sont vraiment utiles que si ton texte est sur plusieurs lignes ou qu'il comporte des guillemets en son sein... ce qui n'est pas ton cas. Tu pourrais te contenter de guillemets simples (mais il ne faut pas oublier de préciser l'encodage de tes caractères en début de fichier, sinon tu peux avoir des surprises).

Je vais chercher mon bébé (et changer sa couche...) et je reviens pour la suite des commentaires et des corrections éventuelles.

Re: Besoin d'un coup de pouce en Python !

Unread postPosted: 03 Mar 2014, 11:20
by Harry-Boo
C'est vrai qu'il y a pas mal de lignes inutiles.
Quant aux triples guillemets, j'ai appris comme ça donc ... ^^'
Ok, mer ci à toi ! :D

EDIT : Vraiment merci pour ton aide :D

Re: Besoin d'un coup de pouce en Python !

Unread postPosted: 03 Mar 2014, 11:30
by Bisam
Oula !
Mais je viens de voir qu'il y a plein d'erreurs d'indentation... et aussi des oublis de fermeture de parenthèses, des espaces en trop dans les noms des couleurs, etc...
Voici un code corrigé :
Code: Select all
import math
import random
argent = 100
while argent > 0:
   print('''Il vous reste''', argent, '''$''')
   mise = input('''Entrez la valeur de votre mise : ''')
   mise = int(mise)
   if mise >= argent:
      mise = argent
      argent = 0
   else:
      argent -= mise   
   print('''Il vous reste ''', argent, '''$''')
   choix = input('''Choisissez le numéro entre 0 et 49 sur lequel vous souhaitez miser : ''')
   choix = int(choix)
   if choix < 0:
       choix = 0
       couleur_choix = '''noir'''
   elif choix > 49:
       choix = 49
       couleur_choix = '''rouge'''
   else:
       if choix % 2 == 0:
           couleur_choix='''noir'''
       else:
           couleur_choix='''rouge'''
   print('''Vous avez misé ''', mise, '''$ sur le ''', choix, couleur_choix)
   resultat = random.randint(0, 49)
   resultat = int(resultat)
   if resultat % 2 == 0:
       couleur_resultat = '''noir'''
   else:
       couleur_resultat = '''rouge'''
   print('''Il fallait miser sur le ''', resultat, couleur_resultat)
   if choix == resultat:
       print('''Bravo, vous avez choisi le bon numéro ! :D''')
       print('''Vous remportez donc : ''', 4*mise,''' $ (soit 3 fois votre mise plus votre mise de départ) ''')
       mise *= 4
       argent += mise
       print('''Vous avez donc maintenant ''', argent, '''$''')
   elif couleur_choix == couleur_resultat:
       print('''Bravo, vous avez choisi la bonne couleur ! :D''')
       print('''Vous remportez donc : ''' , math.ceil(1.5*mise), ''' $ (soit 0.5 fois votre mise plus votre mise de départ) ''')
       mise *= 1.5
       mise = math.ceil(mise)
       argent += mise
       print('''Vous avez donc maintenant ''', argent, '''$''')
   else:
       print('''Désolé, mais vous avez perdu :(''')
       print('''Vous avez donc maintenant ''', argent, '''$''')


On peut encore faire la remarque que l'on pourrait aussi bien s'en sortir sans utiliser la fonction "math.ceil", mais uniquement des divisions euclidiennes... et puis il vaudrait mieux utiliser des constantes pour les noms des couleurs... mais pour l'instant, restons-en là.

Re: Besoin d'un coup de pouce en Python !

Unread postPosted: 22 Mar 2014, 09:53
by Harry-Boo
Salut !
Je suis en train de réviser pour les équations de cercle, et tant qu'à faire, autant faire un petit programme en Python pour me tester !
Mais bon, je ne suis qu'un débutant et ai encore pas mal de mal avec l'interface graphique :/
Et c'est pour cela que j'aurais besoin de votre aide pour ce code :

Code: Select all
import tkinter
from tkinter import *
import math
import random

#On crée l'équation du cercle sous la forme : x²+y²+x+y+c
x_eq = -6
y_eq = 2
constante = 5


#On affiche l'équation du cercle
print("Soit C le cercle d'équation : \nx² + y² +",x_eq,"x +",y_eq,"y +",constante," = 0\n \n")
print("Déterminer les coordonnées du centre I et du rayon R \n")

#On demande de saisir les coordonnées
x_choix = input("xI = ")
y_choix = input("yI = ")
r_choix = input("R² = ")

#On calcule les coordonées de I et la valeur de R
x_rep = -(1/2 * x_eq)
y_rep = -(1/2 * y_eq)
r_rep = -( -(x_rep**2) - (y_rep**2) + constante)

#On crée une fenêtre tkinter
fenetre = Tk()
fenetre.title("Vérification de l'équation de cercle")


def Cercle_correction() :
   #On trace un cercle rouge de centre I(x_rep;y_rep) et de rayon R=r_rep
   Canevas.create_oval(x_rep-r_rep, y_rep-r_rep, x_rep+r_rep, y_rep+r_rep, outline="red")
   

def Cercle_propose() :
   #On trace un cercle vert de centre I(x_choix;y_choix) et de rayon R=r_choix
   Canevas.create_oval(x_choix-r_choix, y_choix-r_choix, x_choix+r_choix, y_choix+r_choix, outline="green")
   

# Création d'un widget Canvas (zone graphique)
largeur = 480
hauteur = 320
Canevas = Canvas(fenetre, width = largeur, height = hauteur, bg ='white')
Canevas.pack(padx =5, pady =5)


# Création d'un widget Button (bouton votre cercle)
BoutonGo = Button(fenetre, text ='Votre cercle', command = Cercle_propose)
BoutonGo.pack(side = LEFT, padx = 10, pady = 10)


# Création d'un widget Button (bouton correction)
BoutonGo = Button(fenetre, text ='Correction', command = Cercle_correction)
BoutonGo.pack(side = LEFT, padx = 10, pady = 10)


#On crée une boucle qui s'arrête lorsque l'on ferme la fenêtre
print("Regardez la correction :")
fenetre.mainloop

ok=input()


Merci :D