1def курс_в_лева(rates):
2 result = {}
3 for valuta, value in rates.items():
4 if value == 0:
5 continue
6 new_value = round((1 / value), 4)
7 result[valuta] = new_value
8 return result
9
10def курс_в_лева_без_преждевременно_закръгляне(rates):
11 result = {}
12 for valuta, value in rates.items():
13 if value == 0:
14 continue
15 new_value = 1 / value
16 result[valuta] = new_value
17 return result
18
19def валута_към_левчета(*args, **kwargs):
20 result = {}
21 dic = курс_в_лева_без_преждевременно_закръгляне(kwargs)
22 for valuta, value in args:
23 if valuta == "BGN":
24 value = round(value, 4)
25 else:
26 value = round(dic[valuta] * value, 4)
27 result[valuta] = result.get(valuta, 0) + value
28 return result
29
30def валута_към_левчета_без_преждевременно_закръгляне(*args, **kwargs):
31 result = {}
32 dic = курс_в_лева_без_преждевременно_закръгляне(kwargs)
33 for valuta, value in args:
34 if valuta == "BGN":
35 value = value
36 else:
37 value = dic[valuta] * value
38 result[valuta] = result.get(valuta, 0) + value
39 return result
40
41def е_патриотична(amounts, rates):
42 result = 0
43 all_sum = валута_към_левчета_без_преждевременно_закръгляне(*amounts, **rates)
44 for curr_sum in all_sum.values():
45 result += curr_sum
46 result = round(result, 2)
47 if result % 1 == 0:
48 return "ПАТРИОТИЧНА!"
49 else:
50 return "НЕПАТРИОТИЧНА!"
51
52
53#С цел да спестя писане исках да използвам вече написани функции. Проблемът е че всяка от тях изисква закръгляне
54#което води до загуба на информация и някои примери ([("USD", 12.5), ("DKK", 1.4286)!!!, ("EUR", 8)]) ми излизаха
55#грешни. Затова съм разписал два варианта на една и съща функция с и без закръгляне. Разбира се можех да сложа
56#флагове вместо да копирам 90% от съдържанието на вече съществуваща функция, но се опасявам че промяната на
57#сиганутара на функцията ще се отрази на автоматизираните тестове. Също така валути със стойност 0 са игнорирани
58#за да се избегне делене на 0.
..........
----------------------------------------------------------------------
Ran 10 tests in 0.000s
OK
09.03.2026 22:27
09.03.2026 22:53