finish the exercise

This commit is contained in:
Andreas Zweili 2021-11-04 22:16:34 +01:00
parent afbfecdc55
commit 7674f30a91
2 changed files with 30 additions and 18 deletions

View File

@ -6,7 +6,7 @@ def exchange_money(budget, exchange_rate):
:return: float - exchanged value of the foreign currency you can receive.
"""
pass
return budget / exchange_rate
def get_change(budget, exchanging_value):
@ -17,7 +17,7 @@ def get_change(budget, exchanging_value):
:return: float - amount left of your starting currency after exchanging.
"""
pass
return budget - exchanging_value
def get_value_of_bills(denomination, number_of_bills):
@ -28,7 +28,7 @@ def get_value_of_bills(denomination, number_of_bills):
:return: int - total value of bills you now have.
"""
pass
return denomination * number_of_bills
def get_number_of_bills(budget, denomination):
@ -39,7 +39,7 @@ def get_number_of_bills(budget, denomination):
:return: int - number of bills after exchanging all your money.
"""
pass
return int(budget) // int(denomination)
def exchangeable_value(budget, exchange_rate, spread, denomination):
@ -52,7 +52,12 @@ def exchangeable_value(budget, exchange_rate, spread, denomination):
:return: int - maximum value you can get.
"""
pass
percentage = spread / 100
real_exchange_rate = exchange_rate + exchange_rate * percentage
number_of_bills = get_number_of_bills(
budget / real_exchange_rate, denomination)
return number_of_bills * denomination
def non_exchangeable_value(budget, exchange_rate, spread, denomination):
@ -65,4 +70,11 @@ def non_exchangeable_value(budget, exchange_rate, spread, denomination):
:return: int non-exchangeable value.
"""
pass
percentage = spread / 100
real_exchange_rate = exchange_rate + exchange_rate * percentage
number_of_bills = get_number_of_bills(
budget / real_exchange_rate, denomination)
foreign = number_of_bills * denomination
return int(budget / real_exchange_rate - foreign)

View File

@ -11,43 +11,42 @@ from exchange import (
class CurrencyExchangeTest(unittest.TestCase):
@pytest.mark.task(taskno=1)
def test_exchange_money(self):
input_data = [(100000, 0.84), (700000, 10.1)]
output_data = [119047, 69306]
for variant, (input_data, output_data) in enumerate(zip(input_data, output_data), start=1):
with self.subTest(f"variation #{variant}", input_data=input_data, output_data=output_data):
self.assertEqual(int(exchange_money(input_data[0], input_data[1])), output_data)
self.assertEqual(
int(exchange_money(input_data[0], input_data[1])), output_data)
@pytest.mark.task(taskno=2)
def test_get_change(self):
input_data = [(463000, 5000), (1250, 120), (15000, 1380)]
output_data = [458000, 1130, 13620]
for variant, (input_data, output_data) in enumerate(zip(input_data, output_data), start=1):
with self.subTest(f"variation #{variant}", input_data=input_data, output_data=output_data):
self.assertEqual(get_change(input_data[0], input_data[1]), output_data)
self.assertEqual(get_change(
input_data[0], input_data[1]), output_data)
@pytest.mark.task(taskno=3)
def test_get_value_of_bills(self):
input_data = [(10000, 128), (50, 360), (200, 200)]
output_data = [1280000, 18000, 40000]
for variant, (input_data, output_data) in enumerate(zip(input_data, output_data), start=1):
with self.subTest(f"variation #{variant}", input_data=input_data, output_data=output_data):
self.assertEqual(get_value_of_bills(input_data[0], input_data[1]), output_data)
self.assertEqual(get_value_of_bills(
input_data[0], input_data[1]), output_data)
@pytest.mark.task(taskno=4)
def test_get_number_of_bills(self):
input_data = [(163270, 50000), (54361, 1000)]
output_data = [3, 54]
for variant, (input_data, output_data) in enumerate(zip(input_data, output_data), start=1):
with self.subTest(f"variation #{variant}", input_data=input_data, output_data=output_data):
self.assertEqual(get_number_of_bills(input_data[0], input_data[1]), output_data)
self.assertEqual(get_number_of_bills(
input_data[0], input_data[1]), output_data)
@pytest.mark.task(taskno=5)
def test_exchangeable_value(self):
inputs = [
(100000, 10.61, 10, 1),
@ -60,9 +59,9 @@ class CurrencyExchangeTest(unittest.TestCase):
for variant, (inputs, output_data) in enumerate(zip(inputs, output_data), start=1):
with self.subTest(f"variation #{variant}", inputs=inputs, output_data=output_data):
self.assertEqual(exchangeable_value(inputs[0], inputs[1], inputs[2], inputs[3]), output_data)
self.assertEqual(exchangeable_value(
inputs[0], inputs[1], inputs[2], inputs[3]), output_data)
@pytest.mark.task(taskno=6)
def test_non_exchangeable_value(self):
inputs = [
(100000, 10.61, 10, 1),
@ -74,4 +73,5 @@ class CurrencyExchangeTest(unittest.TestCase):
for variant, (inputs, output_data) in enumerate(zip(inputs, output_data), start=1):
with self.subTest(f"variation #{variant}", inputs=inputs, output_data=output_data):
self.assertEqual(non_exchangeable_value(inputs[0], inputs[1], inputs[2], inputs[3]), output_data)
self.assertEqual(non_exchangeable_value(
inputs[0], inputs[1], inputs[2], inputs[3]), output_data)