Skip to content

Instantly share code, notes, and snippets.

Created November 2, 2014 19:00
Show Gist options
  • Save anonymous/f8b4ca0bc2d9213bb420 to your computer and use it in GitHub Desktop.
Save anonymous/f8b4ca0bc2d9213bb420 to your computer and use it in GitHub Desktop.
mileage = input("mileage ? ")
days = input("duration (days)? ")
category = raw_input("category (A or B)? ")
mileage_per_day = mileage / days
PER_DAY_UNLIMITED_A = 70
PER_DAY_UNLIMITED_B = 140
allowed_mileage = 200 * days
extra = mileage - allowed_mileage
EXTRA_PER_MILEAGE_A = 1
EXTRA_PER_MILEAGE_B = 1.5
PER_DAY_UNLIMITED_A = 70
PER_DAY_UNLIMITED_B = 140
PER_DAY_PACKAGE_A = 50
PER_DAY_PACKAGE_B = 100
new_amount_A = extra * EXTRA_PER_MILEAGE_A
new_amount_B = extra * EXTRA_PER_MILEAGE_B
real_A = days * PER_DAY_PACKAGE_A
real_B = days * PER_DAY_PACKAGE_B
def calculate_price_unlimited(days):
if category == "A":
price_unlimited = days * PER_DAY_UNLIMITED_A
else:
price_unlimited = days * PER_DAY_UNLIMITED_B
return price_unlimited
def calculate_price_package(days,mileage):
if category == "A":
if mileage < allowed_mileage:
price_package = real_A
else:
price_package = real_A + new_amount_A
else:
if mileage < allowed_mileage:
price_package = real_B
else:
price_package = real_B + new_amount_B
return price_package
if category == "A" :
calculate_price_unlimited(days)
price_1 = calculate_price_unlimited(days)
calculate_price_package(days,mileage)
price_2 = calculate_price_package(days,mileage)
if price_1 < price_2:
actual_price = price_1
savings = price_2 - price_1
print "Best option:","unlimited","$",actual_price,"that is to say","$",savings,"savings"
else:
actual_price = price_2
savings = price_1 - price_2
print "Best option:","package","$",actual_price,"that is to say","$",savings,"savings"
if category == "B" :
calculate_price_unlimited(days)
price_1 = calculate_price_unlimited(days)
calculate_price_package(days,mileage)
price_2 = calculate_price_package(days,mileage)
if price_1 < price_2:
actual_price = price_1
savings = price_2 - price_1
print "Best option:","unlimited","$",actual_price,"that is to say","$",savings,"savings"
else:
actual_price = price_2
savings = price_1 - price_2
print "Best option:","package" ,"$",actual_price, "that is to say", "$",savings,"savings"
@laowantong
Copy link

  • Attention, tu devrais passer également category en paramètre de tes deux premières fonctions. Là, tu récupères la valeur globale, mais c'est mal vu (et de plus, pourquoi ne pas faire ça avec toutes les autres variables du coup?).
  • Dans ma version, le programme n'est pas plus long et je fais les tests de catégorie en dehors des fonctions. C'est-à-dire que j'appelle chaque fonction avec toutes les valeurs correspondant déjà à telle ou telle catégorie. Le but d'introduire des fonctions, est que si on ajoute plus tard des catégories C et D, on n'ait des modifications à faire que dans un seul endroit. Toi, tu devrais dans ce cas modifier encore plus de code.

Encore une fois cependant, bravo pour ton travail. Ce n'est pas une mince affaire d'écrire et de déboguer un programme aussi long.

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