Skip to content

Instantly share code, notes, and snippets.

@fabian57
Last active August 29, 2015 14:08
Show Gist options
  • Save fabian57/e73360edc38b5ce01fd7 to your computer and use it in GitHub Desktop.
Save fabian57/e73360edc38b5ce01fd7 to your computer and use it in GitHub Desktop.
Les deux programmes (sans fonctions et avec fonctions(avec tout plein de nombres magiques pour le deuxième))
#Program without functions
mileage = input("Mileage? ")
duration = input("Duration (in days)? ")
category = raw_input("Categorie (A or B)? ")
COST_PER_DAY_UNLIMITED_A = 70
COST_PER_DAY_PACKAGE_A = 50
COST_PER_DAY_UNLIMITED_B = 140
COST_PER_DAY_PACKAGE_B = 100
COST_PER_EXTRA_MILE_B = 1.5
mileage_limit = 200 * duration
unlimited_A = duration * COST_PER_DAY_UNLIMITED_A
unlimited_B = duration * COST_PER_DAY_UNLIMITED_B
if mileage > mileage_limit:
package_A = duration * COST_PER_DAY_PACKAGE_A + mileage - mileage_limit
package_B = duration * COST_PER_DAY_PACKAGE_B + (mileage - mileage_limit) * COST_PER_EXTRA_MILE_B
else:
package_A = duration * COST_PER_DAY_PACKAGE_A
package_B = duration * COST_PER_DAY_PACKAGE_B
if category == "A" and unlimited_A < package_A:
saving = package_A - unlimited_A
print "Best option: unlimited ($", unlimited_A, ") that is to say $", saving," saving"
elif category == "A" and unlimited_A > package_A:
saving = unlimited_A - package_A
print "Best option: package ($", package_A, ") that is to say $", saving," saving"
elif category == "B" and unlimited_B < package_B:
saving = package_B - unlimited_B
print "Best option: unlimited ($", unlimited_B, ") that is to say $", saving," saving"
elif category == "B" and unlimited_B > package_B:
saving = unlimited_B - package_B
print "Best option: package ($", package_B, ") that is to say $", saving," saving"
else:
print "Unvalid category input!"
#Program with functions
#defining the functions
def calculate_price_unlimited(mileage, duration, category):
if category == "A":
unlimited_A = duration * 70
return unlimited_A
else:
unlimited_B = duration * 140
return unlimited_B
def calculate_price_package(mileage, duration, category):
mileage_limit = 200 * duration
if mileage > mileage_limit:
if category == "A":
package_A = duration * 50 + mileage - mileage_limit
return package_A
else:
package_B = duration * 100 + (mileage - mileage_limit) * 1.5
return package_B
else:
if category == "A":
package_A = duration * 50
return package_A
else:
package_B = duration * 100
return package_B
#The actual price comparator
mileage = input("Mileage? ")
duration = input("Duration (in days)? ")
category = raw_input("Categorie (A or B)? ")
if category == "A":
unlimited_A = calculate_price_unlimited(mileage, duration, category)
package_A = calculate_price_package(mileage, duration, category)
else:
unlimited_B = calculate_price_unlimited(mileage, duration, category)
package_B = calculate_price_package(mileage, duration, category)
if category == "A" and unlimited_A < package_A:
saving = package_A - unlimited_A
print "Best option: unlimited ($", unlimited_A, ") that is to say $", saving," saving"
elif category == "A" and unlimited_A > package_A:
saving = unlimited_A - package_A
print "Best option: package ($", package_A, ") that is to say $", saving," saving"
elif category == "B" and unlimited_B < package_B:
saving = package_B - unlimited_B
print "Best option: unlimited ($", unlimited_B, ") that is to say $", saving," saving"
elif category == "B" and unlimited_B > package_B:
saving = unlimited_B - package_B
print "Best option: package ($", package_B, ") that is to say $", saving," saving"
else:
print "Unvalid category input!"
#May not be the best but I made it and it works
@laowantong
Copy link

(Une autre fois, fais deux gists si tu as deux programmes.)

Programme sans fonctions

  1. Constantes en majuscules.
  2. Lignes 28-39, la structuration est à revoir. Tu peux supprimer les and et imbriquer les conditionnelles plutôt. Imagine que le test category == "A" prenne une heure: avec ta version tu le fais parfois deux fois, donc ça prend deux heures au lieu d'une.
  3. Toujours au niveau de la structure, il serait préférable de ne faire aucun calcul concernant la catégorie A quand on a choisi la B, et réciproquement.

Programme avec fonctions

  1. Regarde le 2e point de mon commentaire ici: https://gist.github.com/anonymous/f8b4ca0bc2d9213bb420

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment