PYTHON 2 FEUILLE n° 10 BIS

                                      PYTHON 2.7     FEUILLLE n° 10    BIS    ALGO

          Thème: 

                      Scripts sur les prix ou tarif.

                COURS:

                  • Utilisation de  round( nombre decimal, nombre de décimales demandées)

                            Par exemple:

                               print  round( 14.457398546 ,2)        affiche    14.46 

                               On a demandé deux décimales seulement.

--------------------------------------------------------------------------------------------------------------------------

     EXERCICE 1

          Un magasin de cartes postales anciennes de 1914 pour collectionneurs

          les vend à l'unité  0,15 € .

          Mais si l'on achète au moins 100 cartes postales, le coût d'une carte

          postale à partir de la 100ème n'est plus que   0,12 € l’unité.

          Exemple de situation :

          Le coût pour l'achat de  77 cartes postales, est de  :

            0,15 × 77 = 11,55 €

          Mais si l'on achète  103 cartes postales, le coût d'achat est seulement de : 

                           0,15 × 100 + 3 × 0,12 = 15,36 € 

          Ecrire un algorithme, en Python 2. 7, qui demande la saisie du nombre n de

         cartes postales achetées, puis qui calcule le coût d'achat et l'affiche.

---------------------------------------------------------------------------------------------------

    REPONSE:

            On peut considérer:

from random import*
def montant():
      n=input(" Indiquer le nombre de cartes postales souhaité: n = ")
      if n>100:
           p=100*0.15+(n-100)*0.12
      else:
            p=n*0.15
      print  " Vous devrez payer", p,"€ pour",n, "cartes postales"

                           On obtient par exemple:

>>> montant()
Indiquer le nombre de cartes postales souhaité: n = 130
Vous devrez payer 18.6 € pour 130 cartes postales
>>> 

                  Ou encore

>>> montant()
Indiquer le nombre de cartes postales souhaité: n = 103
Vous devrez payer 15.36 € pour 103 cartes postales
>>>

-------------------------------------------------------------------------------------------

    EXERCICE 2  

                           PARAMETRES DU CALCUL DU PRIX DE BASE GENERAL

                                SNCF 2ème   CLASSE

            Le prix de base seconde classe est calculé selon la formule : Prix = a + bd. 
            a étant une constante, b le prix kilométrique et d la distance kilométrique. 
            Le montant obtenu est arrondi au décime d’euro supérieur.

            Mode de calcul du prix de base SNCF depuis le 24/01/2013:             

       Distance km (d)         Prix kilométrique (b)             Constante (a)     
  de                      à                2 ième Classe        2 ième Classe
1                       16 km               0.1843         0.7377
17                     32 km               0.2053         0.2374
33                     64 km               0.1515         1.9631
65                    109 km               0.1411         2.7392
110                  149 km               0.1351         3.8743
150                  199 km               0.1131         7.6675
200                  300 km               0.1146         7.3552
301                  499 km               0.0977       12.9431
500                  799 km               0.0874       17.4878
800                9999 km               0.0716       30.5331 


             Direction des Finances – Département de l’Animation du Réseau et du Contrôle Interne  28/02/2013

                                                          ---------------------------------

            Robin qui suit ses études à la faculté de CAEN et revient chaque week-end à Paris. ( 244 km de Paris ).                

            La SNCF, dans sa grande bonté,  propose aux usagers une carte week-end aux conditions suivantes :
                                • Achat d'une carte annuelle d'un coût de 75 €.
                                • 25%  à 50% de réduction sur le prix du billet aux titulaires de la carte

                                  suivant la période ( période normale ou période de pointe ).

            Il compte effectuer n trajets aller-retour à l'année le week-end.

           Ecrire un programme en Python 2. 7 qui demande d’entrer le nombre n de trajets,

           et qui affiche s’il vaut mieux la formule avec la carte , ou sans la carte week-end.

           On distinguera les deux taux de réduction. 25% ou 50%.

--------------------------------------------------------------------------------------------------------------

    REPONSE:

                Par exemple on peut considérer:

from random import*
from decimal import*
def tarif():
      n=input("Combien d'aller-retour Paris-Caen comptez-vous faire le week-end? n = ")
      d=input("Donner la distance Paris-Caen en km ")
      a= 7.3552
      b=0.1146
      k=(a+b*d)*2
      r= (a+b*d)*2*n
                         # r est le montant à l'année pour n aller-retour sans carte
      p=round(k*0.50,2)+ round(75.0/n,2)
                        #  p  est le  prix d'un billet aller-retour avec la carte en période normale
      q=round(k*0.75,2) +round(75.0/n,2)
                      # q  est le prix d'un billet aller-retour avec la carte en période de pointe
      print  "Le prix d'un billet aller-retour sans carte est: ", round(k,2),"€"
      print  "En période normale et avec la carte le prix d'un billet aller-retour est: ",p,"€" 
      print  "En période de pointe et avec la carte le prix d'un billet aller-retour est de : " ,q,"€" 
      ifk<=p and k<=q:
         print  "Le coût le plus avantageux du billet pour vous ",k,"€ est sans la carte "
      elif p<=k and p<=q:
          print  "Le coût du billet avec la carte en période normale",p,"€ est le plus avantageux pour vous "
      elif q<=k and q<=p:
          print "Le coût du billet avec la carte en période de pointe",q,"€, est le plus avantageux pour vous. "

>>>                         

----------------------------------------------------------------------------------------------------------

           EXERCICE 3

           Créer un script qui demande d'entre une liste de nombres positifs ou négatis

           puis qui met dans une liste les nombres positifs et dans une autre liste les 

          nombres négatifs.

-----------------------------------------------------------------------------------------------------------

         REPONSE:

                     On peut considérer comme script:

from random import*

def separa():

      L=input("Entrer une liste de nombres positifs ou négatifs: L = ")

      k=len(L)

      N=[]

      P=[]

      for i in range(k):

           if L[i]<0:

                N.append( L[i])

          else:

                P.append(L[i])

     print "La liste des nombre négatfs strictement est: ",N

     print  " La liste de nombres positifs ou nuls est: ", P

                   On obtient par exemple:

>>> separa()
Entrer une liste de nombres positifs ou négatifs: L = [-2,5,0,-9,7]
La liste des nombre négatfs strictement est: [-2, -9]
La liste de nombres positifs ou nuls est: [5, 0, 7]
>>>

---------------------------------------------------------------------------