Mon programme python ne marche pas [Résolu]

Messages postés
6
Date d'inscription
lundi 4 novembre 2019
Statut
Membre
Dernière intervention
4 novembre 2019
-
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?
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 %
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
20007
Date d'inscription
samedi 17 mars 2007
Statut
Contributeur
Dernière intervention
10 novembre 2019
4151
1
Merci
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é:

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

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 71233 internautes nous ont dit merci ce mois-ci

Mano272520
Messages postés
6
Date d'inscription
lundi 4 novembre 2019
Statut
Membre
Dernière intervention
4 novembre 2019
-
_Ritchi_
Messages postés
20007
Date d'inscription
samedi 17 mars 2007
Statut
Contributeur
Dernière intervention
10 novembre 2019
4151 -
OK et donc ton souci est lequel ? Serait-ce que ton code n'affiche rien ?
Mano272520
Messages postés
6
Date d'inscription
lundi 4 novembre 2019
Statut
Membre
Dernière intervention
4 novembre 2019
-
oui. Quand je rentre les valeurs du revenu et du nombre de part il m'affiche a chaque fois 0. Ca bloque quelque part, je pense qu'il n'exécute pas les formules que j'ai entré ou autre chose
_Ritchi_
Messages postés
20007
Date d'inscription
samedi 17 mars 2007
Statut
Contributeur
Dernière intervention
10 novembre 2019
4151 -
Tout à fait
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
Mano272520
Messages postés
6
Date d'inscription
lundi 4 novembre 2019
Statut
Membre
Dernière intervention
4 novembre 2019
-
Je viens de commencer tout ce qui est algorithme donc désolé si je suis un peu longue a la détente

Quand vous dites que mes calculs sont faux vous parlez de la formule de l'impôt ou celle du qf (parce que c'est a ce niveau que le programme me mettait erreur d'où le fait que je sois allée chercher le truc avec try)

Par contre je comprend pas bien ce que vous dites à propos de la fonction main
Commenter la réponse de _Ritchi_
Messages postés
20007
Date d'inscription
samedi 17 mars 2007
Statut
Contributeur
Dernière intervention
10 novembre 2019
4151
1
Merci
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:
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()

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 71233 internautes nous ont dit merci ce mois-ci

Mano272520
Messages postés
6
Date d'inscription
lundi 4 novembre 2019
Statut
Membre
Dernière intervention
4 novembre 2019
-
Je n'y manquerai pas. Merci beaucoup
Commenter la réponse de _Ritchi_