Назначение явки избирателей Python - класс и объект - PullRequest
0 голосов
/ 04 марта 2019

Мне нужно написать код, чтобы указать название округа, в котором: (i) наблюдается самая высокая явка избирателей и (ii) процент проголосовавших.Можете ли вы помочь мне, потому что я так растерялся.Вот что я сделал:

class County: 
   def __init__(self, init_name, init_population, init_voters) :
   self.population = init_population
   self.voters = init_voters

allegheny = County("allegheny", 1000490, 645469)
philadelphia = County("philadelphia", 1134081, 539069)
montgomery = County("montgomery", 568952, 399591)
lancaster = County("lancaster", 345367, 230278)
delaware = County("delaware", 414031, 284538)
chester = County("chester", 319919, 230823)
bucks = County("bucks", 444149, 319816)
data = [allegheny, philadelphia, montgomery, lancaster, delaware, chester, bucks]  

def highest_turnout(self):
   highest = self[0]
   highest_voters = self[0].voters
   for county in data:
      if county.voters > highest_voters:
         highest = county

result = highest_turnout(self)
print(result)

1 Ответ

0 голосов
/ 04 марта 2019

Суммируя предложения из комментариев, функция highest_turnout должна return highest, в противном случае после завершения функции значение highest будет потеряно.Затем вместо передачи от self до highest_turnout введите data:

class County:
    def __init__(self, init_name, init_population, init_voters):
        self.name = init_name
        self.population = init_population
        self.voters = init_voters

allegheny = County("allegheny", 1000490, 645469)
philadelphia = County("philadelphia", 1134081, 539069)
montgomery = County("montgomery", 568952, 399591)
lancaster = County("lancaster", 345367, 230278)
delaware = County("delaware", 414031, 284538)
chester = County("chester", 319919, 230823)
bucks = County("bucks", 444149, 319816)

data = [allegheny, philadelphia, montgomery, lancaster, delaware, chester, bucks]  

def highest_voter_turnout(data):
    '''iterate over county objects comparing county.voters values; 
    returns county object with max voters attribute'''
    highest_voters = data[0]
    for county in data:
        if county.voters > highest_voters.voters:
            highest_voters = county
    return highest_voters

result_highest_voter_turnout = highest_voter_turnout(data)

print(result_highest_voter_turnout.name)

До сих пор это будет возвращать и отображать название округа, который: (i) имеет самый высокий голосующийявка "(т. е. allegheny).

Теперь можно создать аналогичную функцию для вычисления округа с наибольшим" (ii) процентом проголосовавших "(один метод также упоминается в комментариях).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...