Домашни > Да върнем левчето обратно! > Решения > Решението на Стефан Иванов

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

5 точки общо

9 успешни теста
1 неуспешни теста
Код

 1def курс_в_лева(exchange_rates):
 2    exchange_leva = {}
 3
 4    for currency, rate in exchange_rates.items():
 5        exchange_leva[currency] = round(1 / rate, 4)
 6
 7    return exchange_leva
 8
 9
10def валута_към_левчета(*args, **kwargs):
11    currencies = {}
12
13    for currency, amount in args:
14        if currency in currencies:
15            currencies[currency] += amount
16        else:
17            currencies[currency] = amount
18
19    for curr, exchange in kwargs.items():
20        if curr in currencies and curr != "BGN":
21            currencies[curr] = round(currencies[curr] / exchange, 4)
22    
23    return currencies
24
25
26def е_патриотична(amount, exchange_rates):
27    amounts_dict = валута_към_левчета(*amount, **exchange_rates)
28
29    total_sum = 0
30    for curr, lev_amount in amounts_dict.items():
31        total_sum += lev_amount
32
33    if total_sum == int(total_sum):
34        return "ПАТРИОТИЧНА!"
35
36    return "НЕПАТРИОТИЧНА!"
37
38# exchange_rates = {"EUR": 1.9558, "USD": 1.6718, "DKK": 0.2616}
39# print(курс_в_лева(exchange_rates))
40
41# print(валута_към_левчета(
42#     ("EUR", 1.5),
43#     ("USD", 10),
44#     ("DKK", 10),
45#     ("EUR", 2.5),
46#     EUR=0.5,
47#     USD=0.8,
48#     DKK=7,
49# ))
50
51# exchange_rates = {"EUR": 0.5, "USD": 0.6, "DKK": 3.8}
52# amount = [("EUR", 1), ("USD", 3), ("DKK", 7.6), ("EUR", 3)]
53# print(е_патриотична(amount, exchange_rates)) # ПАТРИОТИЧНА! - 4 / 0.5 + 3 / 0.6 + 7.6 / 3.8 = 15
54
55# amount = [("EUR", 1), ("USD", 2), ("DKK", 7.6), ("EUR", 3)]
56# print(е_патриотична(amount, exchange_rates)) # НЕПАТРИОТИЧНА! - 4 / 0.5 + 2 / 0.6 + 7.6 / 3.8 = 13.33, опитват се да ни измамят

......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:16

Имаш леки пропуски на идиоматичен код, но нищо, което да бие на очи. Всичките са масови и ще ги споменем на лекцията след час.
История

f1def курс_в_лева(exchange_rates):f1def курс_в_лева(exchange_rates):
2    exchange_leva = {}2    exchange_leva = {}
33
n4    for currency, rate in exchange_rates:n4    for currency, rate in exchange_rates.items():
5        exchange_leva[currency] = round(1 / rate, 4)5        exchange_leva[currency] = round(1 / rate, 4)
66
7    return exchange_leva7    return exchange_leva
88
99
10def валута_към_левчета(*args, **kwargs):10def валута_към_левчета(*args, **kwargs):
11    currencies = {}11    currencies = {}
1212
13    for currency, amount in args:13    for currency, amount in args:
14        if currency in currencies:14        if currency in currencies:
15            currencies[currency] += amount15            currencies[currency] += amount
16        else:16        else:
17            currencies[currency] = amount17            currencies[currency] = amount
1818
19    for curr, exchange in kwargs.items():19    for curr, exchange in kwargs.items():
20        if curr in currencies and curr != "BGN":20        if curr in currencies and curr != "BGN":
21            currencies[curr] = round(currencies[curr] / exchange, 4)21            currencies[curr] = round(currencies[curr] / exchange, 4)
22    22    
23    return currencies23    return currencies
2424
2525
26def е_патриотична(amount, exchange_rates):26def е_патриотична(amount, exchange_rates):
27    amounts_dict = валута_към_левчета(*amount, **exchange_rates)27    amounts_dict = валута_към_левчета(*amount, **exchange_rates)
2828
29    total_sum = 029    total_sum = 0
30    for curr, lev_amount in amounts_dict.items():30    for curr, lev_amount in amounts_dict.items():
31        total_sum += lev_amount31        total_sum += lev_amount
3232
33    if total_sum == int(total_sum):33    if total_sum == int(total_sum):
34        return "ПАТРИОТИЧНА!"34        return "ПАТРИОТИЧНА!"
3535
36    return "НЕПАТРИОТИЧНА!"36    return "НЕПАТРИОТИЧНА!"
3737
tt38# exchange_rates = {"EUR": 1.9558, "USD": 1.6718, "DKK": 0.2616}
39# print(курс_в_лева(exchange_rates))
40 
38# print(валута_към_левчета(41# print(валута_към_левчета(
39#     ("EUR", 1.5),42#     ("EUR", 1.5),
40#     ("USD", 10),43#     ("USD", 10),
41#     ("DKK", 10),44#     ("DKK", 10),
42#     ("EUR", 2.5),45#     ("EUR", 2.5),
43#     EUR=0.5,46#     EUR=0.5,
44#     USD=0.8,47#     USD=0.8,
45#     DKK=7,48#     DKK=7,
46# ))49# ))
4750
48# exchange_rates = {"EUR": 0.5, "USD": 0.6, "DKK": 3.8}51# exchange_rates = {"EUR": 0.5, "USD": 0.6, "DKK": 3.8}
49# amount = [("EUR", 1), ("USD", 3), ("DKK", 7.6), ("EUR", 3)]52# amount = [("EUR", 1), ("USD", 3), ("DKK", 7.6), ("EUR", 3)]
50# print(е_патриотична(amount, exchange_rates)) # ПАТРИОТИЧНА! - 4 / 0.5 + 3 / 0.6 + 7.6 / 3.8 = 1553# print(е_патриотична(amount, exchange_rates)) # ПАТРИОТИЧНА! - 4 / 0.5 + 3 / 0.6 + 7.6 / 3.8 = 15
5154
52# amount = [("EUR", 1), ("USD", 2), ("DKK", 7.6), ("EUR", 3)]55# amount = [("EUR", 1), ("USD", 2), ("DKK", 7.6), ("EUR", 3)]
53# print(е_патриотична(amount, exchange_rates)) # НЕПАТРИОТИЧНА! - 4 / 0.5 + 2 / 0.6 + 7.6 / 3.8 = 13.33, опитват се да ни измамят56# print(е_патриотична(amount, exchange_rates)) # НЕПАТРИОТИЧНА! - 4 / 0.5 + 2 / 0.6 + 7.6 / 3.8 = 13.33, опитват се да ни измамят
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op

nn1def курс_в_лева(exchange_rates):
2    exchange_leva = {}
3 
4    for currency, rate in exchange_rates:
5        exchange_leva[currency] = round(1 / rate, 4)
6 
7    return exchange_leva
8 
9 
1def валута_към_левчета(*args, **kwargs):10def валута_към_левчета(*args, **kwargs):
2    currencies = {}11    currencies = {}
312
4    for currency, amount in args:13    for currency, amount in args:
5        if currency in currencies:14        if currency in currencies:
6            currencies[currency] += amount15            currencies[currency] += amount
7        else:16        else:
8            currencies[currency] = amount17            currencies[currency] = amount
918
10    for curr, exchange in kwargs.items():19    for curr, exchange in kwargs.items():
11        if curr in currencies and curr != "BGN":20        if curr in currencies and curr != "BGN":
12            currencies[curr] = round(currencies[curr] / exchange, 4)21            currencies[curr] = round(currencies[curr] / exchange, 4)
13    22    
14    return currencies23    return currencies
tt24 
1525
16def е_патриотична(amount, exchange_rates):26def е_патриотична(amount, exchange_rates):
17    amounts_dict = валута_към_левчета(*amount, **exchange_rates)27    amounts_dict = валута_към_левчета(*amount, **exchange_rates)
1828
19    total_sum = 029    total_sum = 0
20    for curr, lev_amount in amounts_dict.items():30    for curr, lev_amount in amounts_dict.items():
21        total_sum += lev_amount31        total_sum += lev_amount
2232
23    if total_sum == int(total_sum):33    if total_sum == int(total_sum):
24        return "ПАТРИОТИЧНА!"34        return "ПАТРИОТИЧНА!"
2535
26    return "НЕПАТРИОТИЧНА!"36    return "НЕПАТРИОТИЧНА!"
2737
28# print(валута_към_левчета(38# print(валута_към_левчета(
29#     ("EUR", 1.5),39#     ("EUR", 1.5),
30#     ("USD", 10),40#     ("USD", 10),
31#     ("DKK", 10),41#     ("DKK", 10),
32#     ("EUR", 2.5),42#     ("EUR", 2.5),
33#     EUR=0.5,43#     EUR=0.5,
34#     USD=0.8,44#     USD=0.8,
35#     DKK=7,45#     DKK=7,
36# ))46# ))
3747
38# exchange_rates = {"EUR": 0.5, "USD": 0.6, "DKK": 3.8}48# exchange_rates = {"EUR": 0.5, "USD": 0.6, "DKK": 3.8}
39# amount = [("EUR", 1), ("USD", 3), ("DKK", 7.6), ("EUR", 3)]49# amount = [("EUR", 1), ("USD", 3), ("DKK", 7.6), ("EUR", 3)]
40# print(е_патриотична(amount, exchange_rates)) # ПАТРИОТИЧНА! - 4 / 0.5 + 3 / 0.6 + 7.6 / 3.8 = 1550# print(е_патриотична(amount, exchange_rates)) # ПАТРИОТИЧНА! - 4 / 0.5 + 3 / 0.6 + 7.6 / 3.8 = 15
4151
42# amount = [("EUR", 1), ("USD", 2), ("DKK", 7.6), ("EUR", 3)]52# amount = [("EUR", 1), ("USD", 2), ("DKK", 7.6), ("EUR", 3)]
43# print(е_патриотична(amount, exchange_rates)) # НЕПАТРИОТИЧНА! - 4 / 0.5 + 2 / 0.6 + 7.6 / 3.8 = 13.33, опитват се да ни измамят53# print(е_патриотична(amount, exchange_rates)) # НЕПАТРИОТИЧНА! - 4 / 0.5 + 2 / 0.6 + 7.6 / 3.8 = 13.33, опитват се да ни измамят
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op