Перебирая наборы списков, вы можете найти максимальное значение в Python - PullRequest
0 голосов
/ 06 декабря 2018

Как создать функцию, которая выполняет итерации по каждому округу, рассчитывая процент явки избирателей?

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

def highest_turnout(data) :  

    100 * (self.voters / self.population)

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]  

1 Ответ

0 голосов
/ 21 августа 2019

Ваш класс County определен правильно.Однако функция county неверна.

При передаче данных в функцию highest_turnout сначала необходимо рассчитать процент избирателей в первом County списка - он расположен в data[0].Затем мы устанавливаем «самый высокий» в качестве названия страны 1-го County, мы предполагаем, что 1-й в списке data является самым высоким из всех, что мы видели.

Далее мы используем for цикл, чтобы начать итерацию по всем County объектам в списке data для передачи каждого County объекта.

Переменная pct дает нам процент избирателей в County, который выполняется на текущем шаге.Функция if сравнивает его с наибольшим процентом, хранящимся в переменной pct.Если новый процент выше pct (возвращает True), мы обновляем переменную с самым высоким процентом pct и, следовательно, обновляем название округа.

def highest_turnout(data) :

  highest_pct = data[0].voters / data[0].population
  highest = data[0].name

  for county in data :
    pct = county.voters / county.population
    if pct > highest_pct :
      highest_pct = pct
      highest = county.name
...