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

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

6 точки общо

10 успешни теста
0 неуспешни теста
Код

 1def validate_key(key):
 2    return isinstance(key,str) and len(key) == 3
 3
 4
 5def validate_value(value):
 6    return isinstance(value, (float,int))
 7      
 8
 9def курс_в_лева(exchange_rates: dict[str,float])->dict[str,float]:
10    for key,value in exchange_rates.items():
11        if not (validate_key(key) and validate_value(value)):
12            return
13        
14    exchange_rates_in_bg={}
15    for key,value in exchange_rates.items():
16        exchange_rates_in_bg[key] = round(1 / value, 4)
17    
18    return exchange_rates_in_bg
19
20
21def валута_към_левчета(*args,**kwargs):
22    result={}
23    curr_in_bgn = 0
24
25    for curr_element in args:
26        if not (
27            isinstance(curr_element,tuple) 
28            and len(curr_element) == 2 
29            and validate_key(curr_element[0]) 
30            and validate_value(curr_element[1])
31        ):
32            return
33        
34    for key,value in kwargs.items():
35        if not validate_key(key) or not validate_value(value):
36            return
37        
38    for currency, amount in args:
39        if currency == "BGN":
40            curr_in_bgn = amount
41        elif currency in kwargs:
42            curr_in_bgn = amount / kwargs[currency]
43        else:
44            continue
45        
46        curr_in_bgn = round(curr_in_bgn, 4)
47        if currency in result:
48            result[currency] += curr_in_bgn
49        else:
50            result[currency] = curr_in_bgn
51    return result
52
53
54def е_патриотична(amount, exchange_rates):
55    if not (isinstance(amount, list) and isinstance(exchange_rates, dict)):
56        return
57    for currency_and_money in amount:
58        if not (
59            isinstance(currency_and_money,tuple)
60            and len(currency_and_money) == 2
61            and validate_key(currency_and_money[0]) 
62            and validate_value(currency_and_money[1])
63        ):
64            return
65        
66    for key,value in exchange_rates.items():
67        if not (validate_key(key) and validate_value(value)):
68            return
69        
70    curr_in_bgn = 0
71
72    for currency, money in amount:
73        if currency == "BGN":
74            curr_in_bgn += money
75        elif currency in exchange_rates:
76            curr_in_bgn += money / exchange_rates[currency]
77    
78    if round(curr_in_bgn,2).is_integer():
79        return "ПАТРИОТИЧНА!"
80    else:
81        return "НЕПАТРИОТИЧНА!"

..........
----------------------------------------------------------------------
Ran 10 tests in 0.000s

OK

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

На места оставяш интервали правилно - около математическите оператори, след запетаите и т.н. На места - пропускаш.
История

f1def validate_key(key):f1def validate_key(key):
2    return isinstance(key,str) and len(key) == 32    return isinstance(key,str) and len(key) == 3
33
44
5def validate_value(value):5def validate_value(value):
6    return isinstance(value, (float,int))6    return isinstance(value, (float,int))
7      7      
88
9def курс_в_лева(exchange_rates: dict[str,float])->dict[str,float]:9def курс_в_лева(exchange_rates: dict[str,float])->dict[str,float]:
10    for key,value in exchange_rates.items():10    for key,value in exchange_rates.items():
11        if not (validate_key(key) and validate_value(value)):11        if not (validate_key(key) and validate_value(value)):
12            return12            return
13        13        
14    exchange_rates_in_bg={}14    exchange_rates_in_bg={}
15    for key,value in exchange_rates.items():15    for key,value in exchange_rates.items():
16        exchange_rates_in_bg[key] = round(1 / value, 4)16        exchange_rates_in_bg[key] = round(1 / value, 4)
17    17    
18    return exchange_rates_in_bg18    return exchange_rates_in_bg
1919
2020
21def валута_към_левчета(*args,**kwargs):21def валута_към_левчета(*args,**kwargs):
22    result={}22    result={}
23    curr_in_bgn = 023    curr_in_bgn = 0
2424
25    for curr_element in args:25    for curr_element in args:
26        if not (26        if not (
27            isinstance(curr_element,tuple) 27            isinstance(curr_element,tuple) 
28            and len(curr_element) == 2 28            and len(curr_element) == 2 
29            and validate_key(curr_element[0]) 29            and validate_key(curr_element[0]) 
30            and validate_value(curr_element[1])30            and validate_value(curr_element[1])
31        ):31        ):
32            return32            return
33        33        
34    for key,value in kwargs.items():34    for key,value in kwargs.items():
35        if not validate_key(key) or not validate_value(value):35        if not validate_key(key) or not validate_value(value):
36            return36            return
37        37        
38    for currency, amount in args:38    for currency, amount in args:
39        if currency == "BGN":39        if currency == "BGN":
40            curr_in_bgn = amount40            curr_in_bgn = amount
41        elif currency in kwargs:41        elif currency in kwargs:
42            curr_in_bgn = amount / kwargs[currency]42            curr_in_bgn = amount / kwargs[currency]
43        else:43        else:
44            continue44            continue
45        45        
46        curr_in_bgn = round(curr_in_bgn, 4)46        curr_in_bgn = round(curr_in_bgn, 4)
47        if currency in result:47        if currency in result:
48            result[currency] += curr_in_bgn48            result[currency] += curr_in_bgn
49        else:49        else:
50            result[currency] = curr_in_bgn50            result[currency] = curr_in_bgn
51    return result51    return result
5252
5353
54def е_патриотична(amount, exchange_rates):54def е_патриотична(amount, exchange_rates):
55    if not (isinstance(amount, list) and isinstance(exchange_rates, dict)):55    if not (isinstance(amount, list) and isinstance(exchange_rates, dict)):
56        return56        return
57    for currency_and_money in amount:57    for currency_and_money in amount:
58        if not (58        if not (
59            isinstance(currency_and_money,tuple)59            isinstance(currency_and_money,tuple)
60            and len(currency_and_money) == 260            and len(currency_and_money) == 2
61            and validate_key(currency_and_money[0]) 61            and validate_key(currency_and_money[0]) 
62            and validate_value(currency_and_money[1])62            and validate_value(currency_and_money[1])
63        ):63        ):
64            return64            return
65        65        
66    for key,value in exchange_rates.items():66    for key,value in exchange_rates.items():
67        if not (validate_key(key) and validate_value(value)):67        if not (validate_key(key) and validate_value(value)):
68            return68            return
69        69        
70    curr_in_bgn = 070    curr_in_bgn = 0
7171
72    for currency, money in amount:72    for currency, money in amount:
t73            if currency == "BGN":t73        if currency == "BGN":
74                curr_in_bgn += money74            curr_in_bgn += money
75            elif currency in exchange_rates:75        elif currency in exchange_rates:
76                curr_in_bgn += money / exchange_rates[currency]76            curr_in_bgn += money / exchange_rates[currency]
77    77    
78    if round(curr_in_bgn,2).is_integer():78    if round(curr_in_bgn,2).is_integer():
79        return "ПАТРИОТИЧНА!"79        return "ПАТРИОТИЧНА!"
80    else:80    else:
81        return "НЕПАТРИОТИЧНА!"81        return "НЕПАТРИОТИЧНА!"
8282
8383
8484
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op