Домашни > Предизборно ООП > Решения > Решението на Катерина Коцева

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

7 точки общо

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

 1class Currency:
 2    def __init__(self, currency_name, exchange_rate):
 3        self.currency_name = currency_name
 4        self.exchange_rate = exchange_rate
 5
 6    def __eq__(self, other):
 7        return self.currency_name == other.currency_name and self.exchange_rate == other.exchange_rate
 8
 9
10class PoliticalParty:
11    def __init__(self, party_name, motto, members = None, preferred_currency = None):
12        self.party_name = party_name
13        self._motto = motto
14        self.members = members if members is not None else []
15        self.preferred_currency = preferred_currency
16
17    @property
18    def motto(self):
19        return self._motto
20
21    def convert_currency_to_voters(self, currency_amount, currency):
22        voters = currency_amount / currency.exchange_rate
23        if self.preferred_currency is not None and self.preferred_currency == currency:
24            voters *= 2
25        return int(voters)
26
27    def __str__(self):
28        return self.party_name
29
30    def __add__(self, other):
31        if isinstance(other, PoliticalParty):
32            return Coalition(self, other)
33        return None
34
35
36class Coalition:
37    def __init__(self, *parties):
38        self.parties = parties
39
40    @property
41    def members(self):
42        result = {}
43        for party in self.parties:
44            result[party.party_name] = party.members
45        return result
46
47    def __add__(self, other):
48        if isinstance(other, PoliticalParty):
49            return Coalition(*self.parties, other)
50
51        if isinstance(other, Coalition):
52            return Coalition(*self.parties, *other.parties)
53        return None
54
55    def __str__(self):
56        return "-".join(map(str, self.parties))
57
58
59class Elections:
60
61    _elections_by_year = {}
62
63    def __init__(self, year):
64        self.year = year
65        self._registered_parties = {}
66        Elections._elections_by_year[year] = self
67
68    def register_party_or_coalition(self, registered_party):
69        self._registered_parties[str(registered_party)] = 0
70
71    def vote(self, registered_party):
72        self._registered_parties[str(registered_party)] += 1
73
74    def rig_elections(self, registered_party, amount, currency):
75        if isinstance(registered_party, PoliticalParty):
76            votes = registered_party.convert_currency_to_voters(amount, currency)
77            self._registered_parties[str(registered_party)] += votes
78        elif isinstance(registered_party, Coalition):
79            max_votes = 0
80            for party in registered_party.parties:
81                votes = party.convert_currency_to_voters(amount, currency)
82                if votes > max_votes:
83                    max_votes = votes
84            self._registered_parties[str(registered_party)] += max_votes
85
86    def get_results(self):
87        return self._registered_parties
88
89    @classmethod
90    def get_results_by_year(cls, year):
91        if year in cls._elections_by_year:
92            return cls._elections_by_year[year].get_results()
93        return {}

.....................
----------------------------------------------------------------------
Ran 21 tests in 0.001s

OK

Дискусия
История

f1class Currency:f1class Currency:
2    def __init__(self, currency_name, exchange_rate):2    def __init__(self, currency_name, exchange_rate):
3        self.currency_name = currency_name3        self.currency_name = currency_name
4        self.exchange_rate = exchange_rate4        self.exchange_rate = exchange_rate
55
6    def __eq__(self, other):6    def __eq__(self, other):
7        return self.currency_name == other.currency_name and self.exchange_rate == other.exchange_rate7        return self.currency_name == other.currency_name and self.exchange_rate == other.exchange_rate
88
99
10class PoliticalParty:10class PoliticalParty:
11    def __init__(self, party_name, motto, members = None, preferred_currency = None):11    def __init__(self, party_name, motto, members = None, preferred_currency = None):
12        self.party_name = party_name12        self.party_name = party_name
13        self._motto = motto13        self._motto = motto
14        self.members = members if members is not None else []14        self.members = members if members is not None else []
15        self.preferred_currency = preferred_currency15        self.preferred_currency = preferred_currency
1616
17    @property17    @property
18    def motto(self):18    def motto(self):
19        return self._motto19        return self._motto
2020
21    def convert_currency_to_voters(self, currency_amount, currency):21    def convert_currency_to_voters(self, currency_amount, currency):
22        voters = currency_amount / currency.exchange_rate22        voters = currency_amount / currency.exchange_rate
t23        if self.preferred_currency is not  None  and self.preferred_currency == currency:t23        if self.preferred_currency is not None and self.preferred_currency == currency:
24            voters *= 224            voters *= 2
25        return int(voters)25        return int(voters)
2626
27    def __str__(self):27    def __str__(self):
28        return self.party_name28        return self.party_name
2929
30    def __add__(self, other):30    def __add__(self, other):
31        if isinstance(other, PoliticalParty):31        if isinstance(other, PoliticalParty):
32            return Coalition(self, other)32            return Coalition(self, other)
33        return None33        return None
3434
3535
36class Coalition:36class Coalition:
37    def __init__(self, *parties):37    def __init__(self, *parties):
38        self.parties = parties38        self.parties = parties
3939
40    @property40    @property
41    def members(self):41    def members(self):
42        result = {}42        result = {}
43        for party in self.parties:43        for party in self.parties:
44            result[party.party_name] = party.members44            result[party.party_name] = party.members
45        return result45        return result
4646
47    def __add__(self, other):47    def __add__(self, other):
48        if isinstance(other, PoliticalParty):48        if isinstance(other, PoliticalParty):
49            return Coalition(*self.parties, other)49            return Coalition(*self.parties, other)
5050
51        if isinstance(other, Coalition):51        if isinstance(other, Coalition):
52            return Coalition(*self.parties, *other.parties)52            return Coalition(*self.parties, *other.parties)
53        return None53        return None
5454
55    def __str__(self):55    def __str__(self):
56        return "-".join(map(str, self.parties))56        return "-".join(map(str, self.parties))
5757
5858
59class Elections:59class Elections:
6060
61    _elections_by_year = {}61    _elections_by_year = {}
6262
63    def __init__(self, year):63    def __init__(self, year):
64        self.year = year64        self.year = year
65        self._registered_parties = {}65        self._registered_parties = {}
66        Elections._elections_by_year[year] = self66        Elections._elections_by_year[year] = self
6767
68    def register_party_or_coalition(self, registered_party):68    def register_party_or_coalition(self, registered_party):
69        self._registered_parties[str(registered_party)] = 069        self._registered_parties[str(registered_party)] = 0
7070
71    def vote(self, registered_party):71    def vote(self, registered_party):
72        self._registered_parties[str(registered_party)] += 172        self._registered_parties[str(registered_party)] += 1
7373
74    def rig_elections(self, registered_party, amount, currency):74    def rig_elections(self, registered_party, amount, currency):
75        if isinstance(registered_party, PoliticalParty):75        if isinstance(registered_party, PoliticalParty):
76            votes = registered_party.convert_currency_to_voters(amount, currency)76            votes = registered_party.convert_currency_to_voters(amount, currency)
77            self._registered_parties[str(registered_party)] += votes77            self._registered_parties[str(registered_party)] += votes
78        elif isinstance(registered_party, Coalition):78        elif isinstance(registered_party, Coalition):
79            max_votes = 079            max_votes = 0
80            for party in registered_party.parties:80            for party in registered_party.parties:
81                votes = party.convert_currency_to_voters(amount, currency)81                votes = party.convert_currency_to_voters(amount, currency)
82                if votes > max_votes:82                if votes > max_votes:
83                    max_votes = votes83                    max_votes = votes
84            self._registered_parties[str(registered_party)] += max_votes84            self._registered_parties[str(registered_party)] += max_votes
8585
86    def get_results(self):86    def get_results(self):
87        return self._registered_parties87        return self._registered_parties
8888
89    @classmethod89    @classmethod
90    def get_results_by_year(cls, year):90    def get_results_by_year(cls, year):
91        if year in cls._elections_by_year:91        if year in cls._elections_by_year:
92            return cls._elections_by_year[year].get_results()92            return cls._elections_by_year[year].get_results()
93        return {}93        return {}
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op

f1class Currency:f1class Currency:
2    def __init__(self, currency_name, exchange_rate):2    def __init__(self, currency_name, exchange_rate):
3        self.currency_name = currency_name3        self.currency_name = currency_name
4        self.exchange_rate = exchange_rate4        self.exchange_rate = exchange_rate
55
6    def __eq__(self, other):6    def __eq__(self, other):
7        return self.currency_name == other.currency_name and self.exchange_rate == other.exchange_rate7        return self.currency_name == other.currency_name and self.exchange_rate == other.exchange_rate
88
99
10class PoliticalParty:10class PoliticalParty:
11    def __init__(self, party_name, motto, members = None, preferred_currency = None):11    def __init__(self, party_name, motto, members = None, preferred_currency = None):
12        self.party_name = party_name12        self.party_name = party_name
13        self._motto = motto13        self._motto = motto
14        self.members = members if members is not None else []14        self.members = members if members is not None else []
15        self.preferred_currency = preferred_currency15        self.preferred_currency = preferred_currency
1616
17    @property17    @property
18    def motto(self):18    def motto(self):
19        return self._motto19        return self._motto
2020
21    def convert_currency_to_voters(self, currency_amount, currency):21    def convert_currency_to_voters(self, currency_amount, currency):
22        voters = currency_amount / currency.exchange_rate22        voters = currency_amount / currency.exchange_rate
n23        if self.preferred_currency is not None:n23        if self.preferred_currency is not  None  and self.preferred_currency == currency:
24            voters *= 224            voters *= 2
25        return int(voters)25        return int(voters)
2626
27    def __str__(self):27    def __str__(self):
28        return self.party_name28        return self.party_name
2929
30    def __add__(self, other):30    def __add__(self, other):
31        if isinstance(other, PoliticalParty):31        if isinstance(other, PoliticalParty):
32            return Coalition(self, other)32            return Coalition(self, other)
33        return None33        return None
3434
3535
36class Coalition:36class Coalition:
37    def __init__(self, *parties):37    def __init__(self, *parties):
38        self.parties = parties38        self.parties = parties
3939
40    @property40    @property
41    def members(self):41    def members(self):
42        result = {}42        result = {}
43        for party in self.parties:43        for party in self.parties:
44            result[party.party_name] = party.members44            result[party.party_name] = party.members
45        return result45        return result
4646
47    def __add__(self, other):47    def __add__(self, other):
48        if isinstance(other, PoliticalParty):48        if isinstance(other, PoliticalParty):
49            return Coalition(*self.parties, other)49            return Coalition(*self.parties, other)
5050
51        if isinstance(other, Coalition):51        if isinstance(other, Coalition):
52            return Coalition(*self.parties, *other.parties)52            return Coalition(*self.parties, *other.parties)
53        return None53        return None
5454
55    def __str__(self):55    def __str__(self):
56        return "-".join(map(str, self.parties))56        return "-".join(map(str, self.parties))
5757
5858
59class Elections:59class Elections:
6060
61    _elections_by_year = {}61    _elections_by_year = {}
6262
63    def __init__(self, year):63    def __init__(self, year):
64        self.year = year64        self.year = year
65        self._registered_parties = {}65        self._registered_parties = {}
66        Elections._elections_by_year[year] = self66        Elections._elections_by_year[year] = self
6767
68    def register_party_or_coalition(self, registered_party):68    def register_party_or_coalition(self, registered_party):
69        self._registered_parties[str(registered_party)] = 069        self._registered_parties[str(registered_party)] = 0
7070
71    def vote(self, registered_party):71    def vote(self, registered_party):
72        self._registered_parties[str(registered_party)] += 172        self._registered_parties[str(registered_party)] += 1
7373
74    def rig_elections(self, registered_party, amount, currency):74    def rig_elections(self, registered_party, amount, currency):
75        if isinstance(registered_party, PoliticalParty):75        if isinstance(registered_party, PoliticalParty):
76            votes = registered_party.convert_currency_to_voters(amount, currency)76            votes = registered_party.convert_currency_to_voters(amount, currency)
77            self._registered_parties[str(registered_party)] += votes77            self._registered_parties[str(registered_party)] += votes
78        elif isinstance(registered_party, Coalition):78        elif isinstance(registered_party, Coalition):
nn79            max_votes = 0
79            for party in registered_party.parties:80            for party in registered_party.parties:
80                votes = party.convert_currency_to_voters(amount, currency)81                votes = party.convert_currency_to_voters(amount, currency)
nn82                if votes > max_votes:
83                    max_votes = votes
81                self._registered_parties[str(registered_party)] += votes84            self._registered_parties[str(registered_party)] += max_votes
8285
83    def get_results(self):86    def get_results(self):
84        return self._registered_parties87        return self._registered_parties
8588
86    @classmethod89    @classmethod
87    def get_results_by_year(cls, year):90    def get_results_by_year(cls, year):
88        if year in cls._elections_by_year:91        if year in cls._elections_by_year:
89            return cls._elections_by_year[year].get_results()92            return cls._elections_by_year[year].get_results()
t90        return f"Някакви други резултати, защото са за {year}"t93        return {}
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op