Mon programme python ne marche pas
Résolu
Mano272520
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
Mano272520 Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
Mano272520 Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
bonsoir. J'ai un devoir a faire en python mais je comprend pas pourquoi j'ai beau tout faire il fonctionne pas. Je suis presque au bord des larmes. est ce que quelqu'un pourrait m'aider rapidement s'il vous plait?
l'exercice:
1. Écrire une fonction impots qui reçoit un revenu annuel entier revenu et un nombre de parts nb_part et qui renvoie le montant de l'impot sur le revenu à payer en fonction des diverses tranches d'imposition. Vous trouverez toutes les information sur le calcul de l'impot ici : https://impots.dispofi.fr/bareme-impot/calcul-impot-par-tranche.
2. Écrire une action principale main qui demande à l'utilisateur de saisir une montant de revenu annuel et un nombre de part, appelle la fonction impots et affiche un message indiquant le montant de l’impôt à payer.
Voici les tranches d'imposition pour 2019
Numéro de tranche
Fraction du revenu imposable
Taux d’imposition 1 jusqu’à 9 964 € 0 % 2 de 9 964 à 27 519 € 14 % 3 de 27 519 à 73 779 € 30 % 4 de 73 779 € à 156 244 € 41 % 5 Au-delà de 156 244 € 45 %
def impots(revenu, nb_part): "renvoie le montant de l'impot à payer en fonction des tranches d'impositions" #var revenu = 0 #int nb_part = 0.0 #float r = 0.0 #float qf = 0.0 #float impot = 0.0 #float #begin r = revenu-(revenu*0.1) qf = r / nb_part if qf < 9964 : impot = 0.0 elif qf > 9964 and qf < 27516 : impot = (r*0.14) - (1394.96*nb_part) elif qf > 27516 and qf< 73779 : impot = (r*0.3) - (5798*nb_part) elif qf> 73779 and qf< 156244 : impot = (r*0.41) - (13913.69*nb_part) else : impot = (r*0.45) - (20163.45*nb_part) return impot #........................................................... def main(): "demande la saisine du montant de revenu annuel et du nombre de part et affiche le montant de l’impôt à payer" #begin print ("veuillez saisir le montant du revenu") revenu = int(input()) print ("veuillez saisir le nombre de parts") nb_part = float(input()) print ("le montant de l'impot a payer est ", impots(revenu, nb_part))
l'exercice:
1. Écrire une fonction impots qui reçoit un revenu annuel entier revenu et un nombre de parts nb_part et qui renvoie le montant de l'impot sur le revenu à payer en fonction des diverses tranches d'imposition. Vous trouverez toutes les information sur le calcul de l'impot ici : https://impots.dispofi.fr/bareme-impot/calcul-impot-par-tranche.
2. Écrire une action principale main qui demande à l'utilisateur de saisir une montant de revenu annuel et un nombre de part, appelle la fonction impots et affiche un message indiquant le montant de l’impôt à payer.
Voici les tranches d'imposition pour 2019
Numéro de tranche
Fraction du revenu imposable
Taux d’imposition 1 jusqu’à 9 964 € 0 % 2 de 9 964 à 27 519 € 14 % 3 de 27 519 à 73 779 € 30 % 4 de 73 779 € à 156 244 € 41 % 5 Au-delà de 156 244 € 45 %
A voir également:
- Mon programme python ne marche pas
- Citizen code python avis - Accueil - Outils
- Programme demarrage windows - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Comment fermer un programme qui ne répond pas - Guide
- Mettre en veille un programme - Guide
2 réponses
Bonsoir,
Deux choses:
1- faire le copié/collé de ton code en indiquant que c'est du python: ainsi l'indentation sera respectée et on comprendra mieux ton code. Pour faire cela:
- utilise le bouton suivant et choisit Python dans la liste déroulante:
- fais le copié/collé de ton code entre les deux balises qui sont apparues:
2- en lisant ton code, il semble que tu n'aies pas compris le principe des tranches d'imposition car tu ne fais pas l'addition des impôts dûs tranche par tranche. Je te fais donc un copié/collé du contenu du lien vers le site des impôts que tu as donné:
Ritchi
Deux choses:
1- faire le copié/collé de ton code en indiquant que c'est du python: ainsi l'indentation sera respectée et on comprendra mieux ton code. Pour faire cela:
- utilise le bouton suivant et choisit Python dans la liste déroulante:

- fais le copié/collé de ton code entre les deux balises qui sont apparues:

2- en lisant ton code, il semble que tu n'aies pas compris le principe des tranches d'imposition car tu ne fais pas l'addition des impôts dûs tranche par tranche. Je te fais donc un copié/collé du contenu du lien vers le site des impôts que tu as donné:
Pour les revenus de 2019 (impôts 2020), les tranches de revenus et les taux d'imposition correspondants sont les suivants :
La tranche de votre quotient familial comprise entre 0 € et 10 064 € n'est pas imposée
La tranche de 10 064 € à 27 794 € est imposée à 14 %
La tranche de 27 794 € à 74 517 € est imposée à 30 %
La tranche de 74 517 € à 157 806 € est imposée à 41 %
La tranche au-delà de 157 806 € est imposée à 45 %
La somme des montants obtenus par tranche correspond à l'impôt brut de votre foyer fiscal pour une part de quotient familial.
Exemple :
Célibataire déclarant 31 000 € de salaires
Salaires imposables = 27 900 € après déduction des 10 % pour frais
Quotient familial = 27 900 € / 1 part = 27 900 €
Taux marginal d'imposition = 30 %
Le calcul de l'impôt se décompose comme suit
De 0 € à 10 064 € = 10 064 € x 0 % = 0 €
De 10 064 € à 27 794 € = 17 730 € x 14 % = 2 482,20 €
De 27 794 € à 27 900 €= 106 € x 30 % = 31,80 €
La somme des montants obtenus correspond à l'impôt brut, soit 2 514 €.
Ritchi
Bonsoir,
Quand tu écris "def impots(revenu, nb_part)": tu définis cette fonction.
Cette fonction impots() est appelée par la fonction main() que tu as défini avec "def main()".
Mais cette fonction main(), dis moi où est-elle appelée dans le code que tu as écrit ?
Réponse: nulle part !
Donc il faut l'appeler et comme il est tard, je te donne une version qui marche et je te fais confiance pour l'étudier et comprendre tes erreurs:
Quand tu écris "def impots(revenu, nb_part)": tu définis cette fonction.
Cette fonction impots() est appelée par la fonction main() que tu as défini avec "def main()".
Mais cette fonction main(), dis moi où est-elle appelée dans le code que tu as écrit ?
Réponse: nulle part !
Donc il faut l'appeler et comme il est tard, je te donne une version qui marche et je te fais confiance pour l'étudier et comprendre tes erreurs:
def impots(revenu, nb_part): # renvoie le montant de l'impot à payer en fonction des tranches d'impositions RN = 0 impot = 0 # tranches d'imposition tranche_1 = 9964 tranche_2 = 27519 tranche_3 = 73779 tranche_4 = 156244 # taux d'imposition taux_1 = 0.14 taux_2 = 0.30 taux_3 = 0.41 taux_4 = 0.45 # begin RN = revenu / nb_part if RN <= tranche_1: impot = 0 elif tranche_1 < RN <= tranche_2: impot = (revenu * taux_1) - (1394.96 * nb_part) elif tranche_2 < RN <= tranche_3: impot = (revenu * taux_2) - (5798 * nb_part) elif tranche_3 < RN <= tranche_4: impot = (revenu * taux_3) - (13913.69 * nb_part) else: impot = (revenu * taux_4) - (20163.45 * nb_part) return impot def main(): # demande la saisine du montant de revenu annuel et du nombre de part et affichele montant de l’impôt à payer" # begin print("veuillez saisir le montant du revenu") revenu = int(input()) print("veuillez saisir le nombre de parts") nb_part = float(input()) print("le montant de l'impot a payer est %d" % (impots(revenu, nb_part))) main()
Déjà merci de m'avoir répondu
Par rapport au 2ème point j'ai compris le principe mais en cherchant sur le net j'ai trouvé une formule qui me permet de calculer directement donc j'ai préférer l'utiliser
Tu as défini la fonction main() mais tu ne l'appelles jamais...
Note: tes calculs sont quand même faux ... d'où la division par zéro que tu rencontres