Inscription / Connexion Nouveau Sujet
Niveau seconde
Partager :

programmation

Posté par
Yahiko
07-12-22 à 09:13

Bonjour,

J'ai besoin d'avoir de l'aide concernant un exercice sur les structures conditionnelles.

Étape 1 : Réaliser un programme qui calcule l'aire de différentes figures (disque, triangle et rectangle). Le programme attend que l'utilisateur choisisse la figure : Sélectionner 1 pour un disque , 2 pour un triangle et 3 pour un rectangle.

Étape 2 : Selon le choix, le programme demande à l'utilisateur d'entrer les données nécessaires (les valeurs entrées peuvent être décimales) :
-rayon du disque (la valeur exacte de pourra être importée depuis le module math)
-base et hauteur du triangle
-longueur et largeur du rectangle



Le programme doit affiché : L'aire de figure est de : surface cm²      

(figure et surface prenant les valeurs  qui conviennent)


Voici ce que j'ai fait pour l'instant :

#disque
rayon=int(input('le rayon du disque :'))
aire=3,14*rayon**2
print('aire du disque :' ,aire,)


#triangle
Base =int(input('Entrez la base du triangle:'))
hauteur=int(input('Entrez la hauteur du triangle:'))
aire=Base*hauteur//2
print('aire du triangle :' ,aire,)


Merci d'une réponse.

Posté par
carpediem
re : programmation 07-12-22 à 09:42

salut

pourquoi ce double slash pour la division par 2  pour l'aire du triangle ?

et pour l'aire du rectangle ?



l'étape 2 : commence par "selon le choix"

tu dois donc commencer par demander quelle est la figure

Posté par
Yahiko
re : programmation 07-12-22 à 10:52

Je n'arrive pas à savoir comment associer un chiffre à une figure.

Voici ce que j'ai fait concernant l'étape 2 :

#disque
rayon=int(input('le rayon du disque :'))
aire=3,14*rayon**2
print('aire du disque :' ,aire,)


#triangle
Base =int(input('Entrez la base du triangle:'))
hauteur=int(input('Entrez la hauteur du triangle:'))
aire=Base*hauteur/2
print('aire du triangle :' ,aire,)


#rectangle
longueur=int(input('longueur du rectangle'))
largeur=int(input('largeur du rectangle'))
aire=longueur*largeur
print('aire du rectangle :',aire,)

Posté par
Leile
re : programmation 07-12-22 à 11:37

bonjour,

en l'absence de Carpediem :

ce que tu as fait est pas mal, mais il faut commencer par le choix de la figure.
Le programme attend que l'utilisateur choisisse la figure : Sélectionner 1 pour un disque , 2 pour un triangle et 3 pour un rectangle.

demander le choix de l'utilisateur
verifier que le choix est correct
si choix = 1, calculer disque,
si choix = 2 calculer triangle
si choix = 3 calculer rectangle

tu vois ?

Posté par
Yahiko
re : programmation 07-12-22 à 12:05

Je ne sais pas comment m'y prendre.

Posté par
carpediem
re : programmation 07-12-22 à 12:14

il faut demander le type de figure et ensuite faire un test pour savoir dans quel cas on se trouve

Posté par
Yahiko
re : programmation 07-12-22 à 12:32

Comme puis-je nommé juste une partie ? Par exemple nommé que la programmation du disque

Posté par
carpediem
re : programmation 07-12-22 à 12:58

"poser la bonne question"

si réponse = "disque" alors ...
si réponse = 'triangle' alors ...
...

Posté par
mathafou Moderateur
re : programmation 07-12-22 à 13:07

bonjour,

l'énoncé dit explicitement que les réponses attendues ne sont pas des mots mais des nombres 1, 2 ou 3

le programme demande (par input, pardi) à l'utilisateur un nombre 1, 2 ou 3 un point c'est tout
il peut être utile de "rappeler" à l'utilisateur dans le message du input, la signification de ces "codes"

puis le programme exécute une suite de tests sur cette réponse (une suite de "if") pour exécuter tel ou tel morceau de ce qui a déja été écrit. (c'est à dire placer chacun de ces morceaux, y compris ses propres input, au bon endroit, dans le bon "si")

bref très exactement ce qu'a écrit Leile

il n'y a rien à "nommer"
ça n'a aucun sens avec cet exo.

Posté par
carpediem
re : programmation 07-12-22 à 13:17

certes mais faire un test sur une variable numérique ou alphanumérique change-t-il quoi que ce soit ?

et c'est bien sûr plus parlant ... comme nommer les variables par des mots correspondant au langage usuel

Posté par
mathafou Moderateur
re : programmation 07-12-22 à 13:29

on peut écrire un programme qui calcule les aires de différentes figures selon un choix de l'utilisateur d'innombrables façons

mais ici on part d'un énoncé explicite ...
bon, cet énoncé ne tient pas debout car sa découpe en "étape 1" et "étape 2" est complètement loufoque :

"l'étape 2" n'étant en fait que des précisions de détails de choses déja à faire dans l'étape 1 !
(demander un choix, et bien évidemment que pour calculer quelque chose il faut aussi demander les données)

Posté par
Yahiko
re : programmation 07-12-22 à 14:12

print('Entrez un chiffre')

if  choix= 1,aire_disque,
if  choix=2,aire_triangle,
if  choix= 3,aire_rectangle,

#disque
rayon=int(input('le rayon du disque :'))
aire_disque=3,14*rayon**2
print('aire du disque :' ,aire_disque,)



#triangle
Base =int(input('Entrez la base du triangle:'))
hauteur=int(input('Entrez la hauteur du triangle:'))
aire_triangle=Base*hauteur/2
print('aire du triangle :' ,aire_triangle,)


#rectangle
longueur=int(input('longueur du rectangle:'))
largeur=int(input('largeur du rectangle:'))
aire_rectangle=longueur*largeur
print('aire du rectangle :',aire_rectangle,)

Posté par
Leile
re : programmation 07-12-22 à 14:36

Yahiko,
as tu revu les structures conditionnelles en python ?
l'instruction if s'écrit

if    condition :
               instructions    (executées si la condition est vraie)
else
               instructions  (executées si la condition n'est pas vraie).



tu écris   if choix = 1
ta condition est mal écrite (il faudrait mettre if choix == 1 : ),
mais surtout le programme ne connaît pas la valeur du choix avant de le  tester.
le print est insuffisant. Il affiche le message seulement. Il faut que tu ajoutes une instruction input.
enfin, où est la fonction   aire_disque  par exemple ?

Posté par
mathafou Moderateur
re : programmation 07-12-22 à 14:53

"la fonction aire_disque"

l'énoncé ne parle pas de créer des fonctions !
on met directement le bon calcul au bon endroit et c'est tout.

Posté par
Leile
re : programmation 07-12-22 à 16:52

relax, mathafou,
j'ai juste parlé de fonction, parce que c'est ce que j'ai pensé que c'était ce à quoi faisait référence Yahiko  quand il écrit
"if  choix= 1,aire_disque,"

Posté par
Yahiko
re : programmation 08-12-22 à 22:36

Bonsoir , voici ce que j'ai fait :

chiffre = int(input('Entrez un chiffre :'))

if chiffre == 1:
  rayon=int(input('le rayon du disque :'))
aire_disque=3,14*rayon**2
print('aire du disque :' ,aire_disque,)

else chiffre <=1 and chiffre == 2 :
   Base =int(input('Entrez la base du triangle:'))
hauteur=int(input('Entrez la hauteur du triangle:'))
aire_triangle=Base*hauteur/2
print('aire du triangle :' ,aire_triangle,)


elif chiffre >=2 and chiffre == 3 :
   longueur=int(input('longueur du rectangle:'))
largeur=int(input('largeur du rectangle:'))
aire_rectangle=longueur*largeur
print('aire du rectangle :',aire_rectangle,)

Posté par
mathafou Moderateur
re : programmation 08-12-22 à 23:04

le premier else devrait être un elif comme second

attention à l'indentation
absolument fondamentale en Python

enfin les dimensions ne sont pas forcément entières (int) mais peuvent être décimales (float), c'est dit dans l'énoncé.

amélioration particulièrement utile (nécessaire)
l'utilisateur lors de la demande "Entrez un chiffre" ne va pas deviner que 1 veut dire disque etc

chiffre = int(input("Type de figure, 1 pour disque, 2=triangle, 3=rectangle : "))

lui rappellerait cette convention.

Posté par
mathafou Moderateur
re : programmation 08-12-22 à 23:06

...
et puis tu en connais beaucoup des nombres qui sont à la fois < 1 et égal à 2 ??

Posté par
Yahiko
re : programmation 09-12-22 à 09:11

chiffre = int(input("Type de figure, 1=disque, 2=triangle, 3=rectangle : "))


if chiffre == 1:
  rayon=int(input('le rayon du disque :'))
aire_disque=3,14*rayon**2
print('aire du disque :' ,aire_disque,)

elif chiffre == 2 :
   Base =int(input('Entrez la base du triangle:'))
hauteur=int(input('Entrez la hauteur du triangle:'))
aire_triangle=Base*hauteur/2
print('aire du triangle :' ,aire_triangle,)


elif chiffre == 3 :
   longueur=int(input('longueur du rectangle:'))
largeur=int(input('largeur du rectangle:'))
aire_rectangle=longueur*largeur
print('aire du rectangle :',aire_rectangle,)

Posté par
mathafou Moderateur
re : programmation 09-12-22 à 10:27

Presque

l'indentation est à corriger :

if chiffre == 1:
    rayon=float(input('le rayon du disque :'))
    aire_disque=3,14*rayon**2
    print('aire du disque :' ,aire_disque,)

elif chiffre == 2 :
    Base =float(input('Entrez la base du triangle:'))
    hauteur=float(input('Entrez la hauteur du triangle:'))
etc

et je t'ai dit que les dimensions c'était des float pas des int

Posté par
mathafou Moderateur
re : programmation 09-12-22 à 10:34

ah, et puis :

Citation :
la valeur exacte de pourra être importée depuis le module math

au tout début :
from math import pi

puis ensuite on l'utilisera dans
aire_disque=pi*rayon**2

Posté par
malou Webmaster
re : programmation 09-12-22 à 10:37

Bonjour à tous

Yahiko, sais-tu que sous la zone d'écriture de ton message, tu as ce symbole < / > qui te permet d'écrire un code en respectant l'indentation sur notre site

Posté par
mathafou Moderateur
re : programmation 09-12-22 à 11:07

pour les posteurs ordinaires, les espaces sont conservés (mais la police à espacement proportionnel les rend plus petits qu'un caractère normal)
donc même sans le bouton [ code ] les espaces en début de lignes auraient dû être présents
(sans qu'il soit possible de les compter, à cause de la police proportionnelle)

quoi qu'il en soit l'utilisation du bouton [ code ] est fortement recommandée pour écrire ... du code (!)
et est même obligatoire (sous peine de suppression des espaces par le site) pour les correcteurs et autres modérateurs

Posté par
Yahiko
re : programmation 09-12-22 à 14:57

D'accord , car je copiais collais mon programme réaliser sur le site de programmation afin de me faciliter la tache.


from math import pi
chiffre = int(input("Type de figure, 1=disque, 2=triangle, 3=rectangle : "))


if chiffre == 1:

[/code] rayon=float(input('le rayon du disque :'))
aire_disque=pi*rayon**2
print('aire du disque :' ,aire_disque,)


elif chiffre == 2 :
 
Base =float(input('Entrez la base du triangle:'))
hauteur=float(input('Entrez la hauteur du triangle:'))
aire_triangle=Base*hauteur/2
print('aire du triangle :' ,aire_triangle,)


elif chiffre == 3 :
[code]
longueur=float(input('longueur du rectangle:'))
largeur=float(input('largeur du rectangle:'))
aire_rectangle=longueur*largeur
print('aire du rectangle :',aire_rectangle,)

Posté par
mathafou Moderateur
re : programmation 09-12-22 à 15:21

tu n'as pas compris l'usage du bouton < / >

tu dois coller le code entre les balises [code]   [/code] créées par ce bouton, en un seul morceau

et de toute façon comme pour tout usage de fonctions de saisie spéciales (gras, LaTeX , exposants, symboles, code, image etc)
tu dois faire Aperçu pour vérifier avant de poster.

ton message est illisible et visiblement faux. (des indentations absentes et/ou incorrectes)

Posté par
carpediem
re : programmation 09-12-22 à 15:22

les balises "code" sont bien mal utilisées et l'indentation bien mal respectée

on peut faire un peu mieux sur deux points :
- le contexte (ne pas utiliser le codage par nombre)
- la concision sans changer totalement la "philosophie" du script

from math import pi
liste_figure = ["disque", "triangle", "rectangle"]
figure = "truc"
while figure not in liste_figure :
  figure = input("figure (disque, triangle, rectangle) ? ")

if figure = "disque" :
  rayon = float(input("rayon du disque ? "))
  aire = pi * rayon**2
if figure = "triangle" :
  Base = float(input("base du triangle ? "))
  hauteur = float(input("hauteur du triangle ? "))
  aire = Base * hauteur/2
if figure = "rectangle" :
  longueur = float(input("longueur du rectangle ? "))
  largeur = float(input("largeur du rectangle ? "))
aire = longueur * largeur

print("l'aire du ", figure, "est : ", aire)

Posté par
Yahiko
re : programmation 09-12-22 à 15:44

 from math import pi 


 chiffre = int(input("Type de figure, 1=disque, 2=triangle, 3=rectangle : "))


if chiffre == 1:
 rayon=float(input('le rayon du disque :'))
 aire_disque=pi*rayon**2
print('aire du disque :' ,aire_disque,)



elif chiffre == 2 :
 Base =float(input('Entrez la base du triangle:'))
 hauteur=float(input('Entrez la hauteur du triangle:'))
 aire_triangle=Base*hauteur/2
print('aire du triangle :' ,aire_triangle,)



elif chiffre == 3 :
 longueur=float(input('longueur du rectangle:'))
 largeur=float(input('largeur du rectangle:'))
 aire_rectangle=longueur*largeur
print('aire du rectangle :',aire_rectangle,)

Posté par
mathafou Moderateur
re : programmation 09-12-22 à 16:56

tout le code en un seul morceau dans une seule paire de balises
vu que c'est un seul programme

et l'indentation n'est toujours pas correcte :
les print doivent être dans les blocs if et pas à indentation nulle (car ils seraient toujours tous exécutés et pas seulement celui correspondant à la figure que l'on calcule !)

Posté par
Yahiko
re : programmation 09-12-22 à 17:16

from math import pi 

chiffre = int(input("Type de figure, 1=disque, 2=triangle, 3=rectangle : "))

if chiffre == 1:
 rayon=float(input('le rayon du disque :'))
 aire_disque=pi*rayon**2
 print('aire du disque :' ,aire_disque,)


elif chiffre == 2 :
 Base =float(input('Entrez la base du triangle:'))
 hauteur=float(input('Entrez la hauteur du triangle:'))
 aire_triangle=Base*hauteur/2
 print('aire du triangle :' ,aire_triangle,)


elif chiffre == 3 :
 longueur=float(input('longueur du rectangle:'))
 largeur=float(input('largeur du rectangle:'))
 aire_rectangle=longueur*largeur
 print('aire du rectangle :',aire_rectangle,)

 print("l'aire du ", figure, "est : ", aire)

Posté par
mathafou Moderateur
re : programmation 09-12-22 à 17:32

la dernière ligne est à supprimer.
elle ne rime à rien du tout dans ton programme

le programme de carpediem est différent.

mathafou @ 07-12-2022 à 13:29

on peut écrire un programme qui calcule les aires de différentes figures selon un choix de l'utilisateur d'innombrables façons

faire un mélange en greffant un bout hors contexte d'un autre programme, qui en plus dépasse le cadre strict de l'exo tel que l'énoncé le demande, sans le comprendre, c'est la pagaille assurée

de toute façon le critère final est bien que le programme fonctionne réellement (en vrai et pas seulement sur papier) et sans éructer des erreurs ou des borborygmes.

Posté par
Yahiko
re : programmation 09-12-22 à 18:58

Je n'avais pas fait attention.


from math import pi 

chiffre = int(input("Type de figure, 1=disque, 2=triangle, 3=rectangle : "))

if chiffre == 1:
 rayon =float(input('le rayon du disque :'))
 aire=pi*rayon**2
 print('aire du disque :' ,aire,)


elif chiffre == 2 :
 Base =float(input('Entrez la base du triangle:'))
 hauteur=float(input('Entrez la hauteur du triangle:'))
 aire=Base*hauteur/2
 print('aire du triangle :' ,aire,)


elif chiffre == 3 :
 longueur=float(input('longueur du rectangle:'))
 largeur=float(input('largeur du rectangle:'))
 aire=longueur*largeur
 print('aire du rectangle :',aire,)

 print('aire de',chiffre,'est de :',aire, 'surface cm²')

Posté par
mathafou Moderateur
re : programmation 10-12-22 à 09:06

non

le message "l'aire de bla bla" a déja été dit au sein de chacune des branches des if
il est inutile et même nuisible de le redire à la fin
à ce que tu crois être à la fin et est en fait dans la branche "rectangle"

c'est uniquement l'indentation qui définit ce qui est ou pas dans le if
le fait d'ajouter autant de lignes vides que l'on veut n'a aucun influence.

je répète donc que la dernière ligne est à supprimer totalement
en plus elle dirait par exemple
aire de 3 est de :120 surface cm²
vachement bien comme message !

Posté par
mathafou Moderateur
re : programmation 10-12-22 à 09:09

et de plus tu as des erreurs de syntaxe dans les print :
la dernière virgule suivie de l'absence d'un terme
ou tu écris ...,aire,'cm²')
ou tu écris ..,aire) tout court

Posté par
Yahiko
re : programmation 10-12-22 à 12:36

from math import pi 

chiffre = int(input("Type de figure, 1=disque, 2=triangle, 3=rectangle : "))

if chiffre == 1:
 rayon =float(input('le rayon du disque :'))
 aire=pi*rayon**2
 print('aire du disque est de :' ,aire,'cm²')


elif chiffre == 2 :
 Base =float(input('Entrez la base du triangle:'))
 hauteur=float(input('Entrez la hauteur du triangle:'))
 aire=Base*hauteur/2
 print('aire du triangle est de :' ,aire,'cm²')


elif chiffre == 3 :
 longueur=float(input('longueur du rectangle:'))
 largeur=float(input('largeur du rectangle:'))
 aire=longueur*largeur
 print('aire du rectangle est de :',aire,'cm²')

Posté par
mathafou Moderateur
re : programmation 10-12-22 à 18:16

à la relecture, je n'ai plus rien à redire
et OK sur un Python en ligne

Posté par
carpediem
re : programmation 10-12-22 à 19:06

mathafou une petite question :

vaut-il mieux trois "if" comme je l'ai fait ou un "if ... elif ... else ..." ?

d'ailleurs il me semble que le deuxième "elif" devrait être un "else" qui termine le dernier cas

enfin dernière remarque de style : ce "de" dans les réponses est laid et inutile :

il est préférable d'avoir "l'aire ... est"

Posté par
mathafou Moderateur
re : programmation 10-12-22 à 21:13

mettre trois if fera que ces trois conditions sont systématiquement testées
et une seule branche sera exécutée bien sur

avec des elif on gagne quelques milliardième de seconde en ne testant pas du tout les conditions après celle qui est satisfaite

en tout cas la dernière ne peut pas être un simple else car cela serait exécuté si chiffre vaut n'importe quoi de différent de 1 et 2
et pas seulement si = 3
à moins de la tester de façon implicite comme tu le fais en bouclant par un while sur la demande tant qu'elle est incorrecte

on peut aussi avec un python récent utiliser une structure match
(équivalent d'un switch ... case de C)

autre méthode : une "commande par table" et un dictionnaire associant les réponses à l'adresse d'une fonction, je ne sais pas faire en Python

quant au style du dialogue .. bof.
c'est comme les rédactions de démonstrations : le style des démonstrations est si souvent douteux.

Posté par
Yahiko
re : programmation 11-12-22 à 13:07

D'accord, merci à tous pour vos aides.
Bonne journée.



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !