Problème de input

Utilisateur anonyme -  
yg_be Messages postés 23541 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

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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
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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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
Utilisateur anonyme
 
Merci, j'ai compris ma faute mais je ne sais pas comment la corrriger ?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Utilisateur anonyme
 
réfléchi encore quelques minutes, fais des essais, cela t'aidera à progresser.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
pour pi, tu peux faire ainsi:
import math
π=math.pi
0
Utilisateur anonyme
 
Merci et pour ça ?

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

0
Utilisateur anonyme
 
'jai réfléchi depuis hier, je n' arrive pas à retrouver la solution
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > 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
Utilisateur anonyme > yg_be Messages postés 23541 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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > 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
Utilisateur anonyme > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Merci
0