Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

Algorithme en python

Posté par
Angel06
01-11-18 à 13:29

Bonjour,  je ne comprend pas cette exercice, pouvez-vous m'aider à écrire le programme en python ? s'il vous plaît.
Merci d'avance

Énonce:
Les critères d'attribution d'un financement de projet par le département de la Haute-Garonne sont les suivants :
Si le candidat est mineur (<18 ans), c'est sans condition de salaire mais ce sont ses parents qui recevront le financement, sauf si c'est un mineur émancipé dans ce cas il le perçoit lui-même.
Si le candidat est majeur (>= 18 ans), il faut que son salaire soit inférieur strictement à 1500 euros/mois sauf s'il est handicapé car dans ce cas il n'y a pas de condition de salaire.
Majeur ou mineur, s'il est juridiquement incapable, il n'a pas droit à ce financement.
Écrire un programme qui définit et appelle une fonction (peut importe son nom). Cette fonction calcule, en fonction de l'âge, du salaire, du statut juridique ("aucun", "emancipe", "incapable") et d'un éventuel handicap si le candidat peut percevoir le financement et si oui, qui le perçoit. Elle renvoie le message adéquat au programme appelant qui imprime ce message.

Attention, pas d'accent dans les messages d'un print.
Contrainte
Définir et appeler une fonction qui renvoie le message attendu selon les 4 critères donnés.

Entrées du programme
un entier (l'âge)
un entier (le salaire)
une chaîne de caractères (le statut : aucun, emancipe,incapable)
"oui" ou "non" ("oui" si handicap, "non" sinon)

Sortie du programme
affichage de l'un des 3 messages possibles parmi :
Pas de droit a un financement
Financement autorise percu par le candidat
Financement autorise percu par les parents du candidat

Posté par
boninmi
re : Algorithme en python 01-11-18 à 14:16

Bonjour,

Je ne connais pas Python, mais c'est juste une question de syntaxe.
Qu'est-ce que tu ne comprends pas ? C'est juste une analyse par cas imbriqués.  Le programme lui même est un simple appel de la fonction (après lecture des données, et ensuite il y a un affichage). L'essentiel de l'exercice est donc l'écriture de la fonction selon la syntaxe en Python. L'analyse par cas est dans la fonction, selon la syntaxe de Python tu t'en sors avec des" si ... alors ..." (if .. else ... probablement) imbriqués ou des structures "selon ..." imbriquées (genre "case..." si ça existe en Python).
Donne une tentative d'écriture, cela sera plus facile pour voir ce qui te bloque.

Posté par
Angel06
re : Algorithme en python 01-11-18 à 14:34

Voilà ce que j'ai écrit

def financement(age,salaire,statut,handicap):
    age=int(input())
    salaire=int(input())
    statut=str(input())
    handicap=str(input())
    
if age<18 and statut=="aucun":
return ("Financement autorise percu par les parents du candidat")
if age<18 and statut=="emancipe":
return ("Financement autorise percu par le candidat")
if statut=="incapable":
return ("Pas de droit a un financement")
if handicap=="oui":
return ("Financement autorise percu par le candidat")
else:
return ("Pas de droit a un financement")

print (financement(age,salaire,statut,handicap))

Posté par
alb12
re : Algorithme en python 01-11-18 à 15:23

salut,
pour ecrire du code utilise les balises </>

Posté par
boninmi
re : Algorithme en python 01-11-18 à 15:28

Je pense que les entrées

****
age=int(input())
    salaire=int(input())
    statut=str(input())
    handicap=str(input())
*****
n'ont pas à être dans la description de la fonction, mais juste avant son appel (donc le print). Elles sont alors passées en paramètres dans la fonction.

En algorithmique, la succession de if ... if...    ... if ... est à proscrire. C'est l'oubli de cas ou l'incohérence des disjonctions de cas assurés. Utilise les structures imbriquées du genre if ... elif ... ... else... Voir ici par exemple:
Ton analyse est incomplète en particulier parce que tu n'utilises jamais la spécification concernant les 1500 euros par mois (sans préjuger d'autres inexactitudes, je n'ai pas regardé suffisamment en détail).

Revois les bases du langage et lis des exemples : voir le lien ci-dessus ou d'autres. Pratique sur machine en testant tes programmes avec des données. Sinon ton "je ne comprends pas cet exercice" ne me paraît pas vraiment justifié. Tu manques de pratique, de maîtrise du langage et des algorithmes, mais tu as été capable d'écrire une amorce de programme. A toi de te prendre en main en suivant les conseils ci-dessus.

Posté par
ThierryPoma
re : Algorithme en python 01-11-18 à 15:37

Bonjour,

Voici une proposition que tu pourras comparer avec ton oeuvre :

def financement(age,salaire,statut,handicap):
         if statut=="incapable":
             return("Pas de droit au financement")
         if age<18:
             if statut=="emancipe":
                  return("Financement autorisé perçu par le candidat")
             return("Financement autorisé perçu par les parents")
         if statut=="oui":
             return("Financement autorisé perçu par le candidat sans condition de salaire")
        if salaire<1500:
           return("Financement autorisé perçu par le candidat")
        return("Pas de droit au financement")

age=int(input())
salaire=int(input())
statut=str(input())
handicap=str(input())

print(financement(age,salaire,statut,handicap))



Attention aux indentations qui sont importantes en Python...

Posté par
ThierryPoma
re : Algorithme en python 01-11-18 à 15:41

Voici une autre façon de faire :

def financement(age,salaire,statut,handicap):
      if statut!="incapable":
         if age<18:
             if statut=="emancipe":
                  return("Financement autorisé perçu par le candidat")
             return("Financement autorisé perçu par les parents")
         if statut=="oui":
             return("Financement autorisé perçu par le candidat sans condition de salaire")
        if salaire<1500:
           return("Financement autorisé perçu par le candidat")
   return("Pas de droit au financement")

Posté par
carpediem
re : Algorithme en python 01-11-18 à 15:55

salut

boninmi @ 01-11-2018 à 15:28

En algorithmique, la succession de if ... if...    ... if ... est à proscrire. C'est l'oubli de cas ou l'incohérence des disjonctions de cas assurés.
  tu as parfaitement raison ... sauf quand les cas sont exclusifs les uns des autres ... donc dans le cas d'une partition de l'univers ...

comme c'est la cas ici où tout individu ne rentre que dans une seule catégorie

et ça allège considérablement l'écriture du programme (et de l'algorithme aussi)

Posté par
boninmi
re : Algorithme en python 01-11-18 à 18:25

carpediem @ 01-11-2018 à 15:55

et ça allège considérablement l'écriture du programme (et de l'algorithme aussi)

[/quote



Certes. Mais l'allègement n'est pas considérable si le programme est bien écrit et les bonnes pratiques peuvent être préférées aux allègements.

Posté par
carpediem
re : Algorithme en python 01-11-18 à 20:02

quand on en sera à 100 000 lignes de code ... là on commencera à faire attention ...

pour ce qui est demandé c'est largement suffisant ...

les bonnes pratiques viendront avec l'expérience et la quantité ...

Posté par
alb12
re : Algorithme en python 02-11-18 à 11:26

salut,
Angel06 est en premiere, il faut donc commencer en douceur.
En matiere de programmation le mieux est parfois l'ennemi du bien

Répondre à ce sujet

Seuls les membres peuvent poster sur le forum !

Vous devez être connecté pour poster :

Connexion / Inscription Poster un nouveau sujet
Une question ?
Besoin d'aide ?
(Gratuit)
Un modérateur est susceptible de supprimer toute contribution qui ne serait pas en relation avec le thème de discussion abordé, la ligne éditoriale du site, ou qui serait contraire à la loi.


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

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 !