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]
>>>
---------------------------------------------------------------------------