Домашни > Да върнем левчето обратно! > Решения > Решението на Александър Ангелов

Резултати
5 точки от тестове
0 точки от учител

5 точки общо

9 успешни теста
1 неуспешни теста
Код
Скрий всички коментари

 1def курс_в_лева(old_exchange_rates):
 2    """Converts foreign currency to bulgarian currency."""
 3    return {currency: round(1 / value, 4) for currency, value in old_exchange_rates.items()}
 4
 5def валута_към_левчета(*args, **kwargs):
 6    """Summing the amount of similar currencies and converting by a fixed course"""
 7    total_amounts = {}
 8    total_amount_to_bg = {}
 9    for key,value in args:
10        total_amounts[key] = total_amounts.get(key, 0) + value
11
12    for currency, amount in total_amounts.items():
13        if currency == "BGN":
14            total_amount_to_bg[currency] = round(amount, 4)
15        else:
16            total_amount_to_bg[currency] = round(amount / kwargs[currency], 4)
17
18    return list(total_amount_to_bg.items())
19
20def е_патриотична(amount, exchange_rates):
21    """Checking if the sum after converting to lv is correct and fair one"""
22    total_amounts = {}
23    total_sum_money = 0.0
24    for key, value in amount:
25        total_amounts[key] = total_amounts.get(key, 0) + value
26    for key, value in total_amounts.items():
27        total_sum_money += value / exchange_rates[key]
28
29    res = round(total_sum_money, 2)
30    integer_part = int(res)
31    fractional_part = total_sum_money - integer_part
32
33    return 'НЕПАТРИОТИЧНА!' if fractional_part > 0.00 else 'ПАТРИОТИЧНА!'

......F...
======================================================================
FAIL: test_е_патриотична_стотинки (test.TestЕПатриотична.test_е_патриотична_стотинки)
The total should be evaluated with a precision of 2 digits after the decimal point.
----------------------------------------------------------------------
Traceback (most recent call last):
File "/tmp/test.py", line 132, in test_е_патриотична_стотинки
self.assertEqual("ПАТРИОТИЧНА!", патриотична)
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 'ПАТРИОТИЧНА!' != 'НЕПАТРИОТИЧНА!'
- ПАТРИОТИЧНА!
+ НЕПАТРИОТИЧНА!
? ++

----------------------------------------------------------------------
Ran 10 tests in 0.001s

FAILED (failures=1)

Дискусия
Виктор Бечев
11.03.2026 18:26

Отвъд горните коментари - браво, използвал си тернарните изрази, тук-таме някой comprehension, `list(total_amount_to_bg.items())` е хубав подход. Има още дребни неща, които ще споменем на лекцията след малко, но си имплементирал голям процент от нещата, които сме забелязали из това домашно като липсващи [Python](https://www.youtube.com/watch?v=djKPvXDwXcs) идиоми.
История
Това решение има само една версия.