Problème de input

Utilisateur anonyme -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
En bref, je crée un petit programme python où on demande à l'utilisateur de choisir une forme géométrique et de calculer son volume et selon son choix, l'ordinateur lui fournit les données nécessaires (Largeur, hauteur...) ensuite on va vérifier sa réponse, le problème est :

voici mon code :

#import random
#import math
from random import randint
a = "Cube"
b = "Cylindre"
c = "Parallélépipède Rectangle"
arête = randint(1,50)
hauteur = randint(1,50)
largeur = randint(1,50)
longueur = randint(1,50)
rayon = randint(1,50)
π = 3.1415926535897
print("Révisons les volumes ensemble")
print("\n")
print("a.",a)
print('b.',b)
print('c.',c)
print("\n")
choix= input ('Veuillez choisir une forme géométrique: ')
if choix == 'a':
print('\n')
print("Sachant que l'arête est",arête,', calculez le volume de ce cube')
reponse_a = int(input('Le volume de ce cube est :'))
print(' ')
print('\n')
if choix =='b':
print('On donne :')
print('Hauteur =',hauteur)
print('Rayon = ', rayon)
print('π =', π)
reponse_b = float(input('Le volume de ce cylindre est :'))
print('\n')
if choix =='c':
print('On donne :')
print('Hauteur =',hauteur)
print('Longueur =',longueur)
print('Largeur =',largeur)
reponse_c = int(input('Le volume de ce parallélépipède rectangle :' ))
print(' ')
if reponse_a == arête**3 and choix =='a':
print('Bravo ! Vous avez bien répondu')
else:
print("C'est faux, tu dois réviser davantage, la réponse est", arête**3)
print('\n')
if reponse_b == hauteur*rayon**2*π and choix =='b':
print('Bravo ! Vous avez bien répondu')
else:
print("C'est faux, tu dois réviser davantage, la réponse est", arête**3)
print('\n')
if reponse_c == largeur*hauteur*longueur:
print('Bravo ! Vous avez bien répondu')
else :
print("C'est faux, vous devez réviser davantage, la réponse est", hauteur*longueur*largeur)

3 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, ton programme est, malheureusement, comme tu peux le voir, illisible.
    peux-tu utiliser les explications ici?
    https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
    0
    1. Utilisateur anonyme
       
      #import random
      #import math
      from random import randint 
      a = "Cube" 
      b = "Cylindre"
      c = "Parallélépipède Rectangle" 
      arête = randint(1,50)
      hauteur = randint(1,50)
      largeur = randint(1,50)
      longueur = randint(1,50)
      rayon = randint(1,50)
      π =  3.1415926535897
      print("Révisons les volumes ensemble")
      print("\n")
      print("a.",a) 
      print('b.',b)
      print('c.',c)
      print("\n") 
      choix= input ('Veuillez choisir une forme géométrique: ') 
      if choix == 'a':
         print('\n')
         print("Sachant que l'arête est",arête,', calculez le volume de ce cube')
         reponse_a = int(input('Le volume de ce cube est :')) 
      print(' ')
      print('\n')
      if choix =='b':
      	print('On donne :')
      	print('Hauteur =',hauteur)
      	print('Rayon = ', rayon)
      	print('π =', π)
      	reponse_b = float(input('Le volume de ce cylindre est :'))
      print('\n')
      if choix =='c':
      	print('On donne :')
      	print('Hauteur =',hauteur)
      	print('Longueur =',longueur)
      	print('Largeur =',largeur)
      	reponse_c = int(input('Le volume de ce parallélépipède rectangle :' ))
      print(' ')
      if reponse_a == arête**3 and choix =='a':
      	print('Bravo ! Vous avez bien répondu')
      else:
      	print("C'est faux, tu dois réviser davantage, la réponse est", arête**3)
      print('\n')
      if reponse_b == hauteur*rayon**2*π and choix =='b':
      	print('Bravo ! Vous avez bien répondu')
      else:
      	print("C'est faux, tu dois réviser davantage, la réponse est", arête**3)
      print('\n')
      if reponse_c == largeur*hauteur*longueur:
      	print('Bravo  ! Vous avez bien répondu')
      else :
      	print("C'est faux, vous devez réviser davantage, la réponse est", hauteur*longueur*largeur)
      0
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    si tu fais le choix "b", quand tu arrives ici:
    if reponse_a == arête**3 and choix =='a':

    la variable
    reponse_a
    n'est pas définie, puisque tu n'as exécuté aucun
    reponse_a=...

    c'est cela que t'indique le message d'erreur.
    il y a plusieurs façons de remédier au problème, je te laisse choisir celle qui te convient.
    0
    1. Utilisateur anonyme
       
      Merci, j'ai compris ma faute mais je ne sais pas comment la corrriger ?
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Utilisateur anonyme
         
        réfléchi encore quelques minutes, fais des essais, cela t'aidera à progresser.
        0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      pour pi, tu peux faire ainsi:
      import math
      π=math.pi
      0
  3. Utilisateur anonyme
     
    Merci et pour ça ?

    Comment je peux éviter les demandes de definir toutes les réponses ?

    0
    1. Utilisateur anonyme
       
      'jai réfléchi depuis hier, je n' arrive pas à retrouver la solution
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Utilisateur anonyme
       
      prend ton temps, écris un texte qui explique ce que tu crois être le problème.
      imagine comment te programme pourrait être différent.
      trouver des solutions, réfléchir à comment faire autrement, cela ne peut que t'aider à progresser.

      ou bien arrête d'y réfléchir, fais d'autres exercices, cela t'aidera à découvrir d'autres méthodes.
      0
    3. Utilisateur anonyme > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Ok, je crois que le problème s'agit de if puisqu'il y a beaucoup de if est ce que je peux faire 3 grands if et d'autres if dans ces if ?
      0
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Utilisateur anonyme
       
      une des trois solutions que j'imaginais était, effectivement, de faire des if imbriqués.
      heureusement, il est autorisé de mettre des if dans des if.
      0
    5. Utilisateur anonyme > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Merci
      0