Het Huis van Afgevaardigden van de Verenigde Staten (in het Engels: United States House of Representatives) is het lagerhuis van het Amerikaans Congres en bestaat uit 435 stemgerechtigde leden.
Elk stemgerechtigd lid wordt gekozen in een congresdistrict dat vastgesteld wordt op basis van de gegevens van de volkstelling (census). Aan de hand van de tienjaarlijkse volkstelling wordt bepaald hoeveel vertegenwoordigers iedere staat krijgt toebedeeld in het Huis van Afgevaardigden (in de volkstelling van 2000 staat elke zetel voor gemiddeld 646.952 inwoners). Elke staat krijgt minstens één zetel. Iedere tien jaar herzien de staten het aantal congresdistricten en de bijbehorende grenzen om die in overeenstemming te bereiken met het aantal afgevaardigden dat ze naar het Huis van Afgevaardigden mogen sturen. Een lid zit een termijn van twee jaar. Verder heeft het Huis nog zes leden zonder stemrecht, uit Guam, Amerikaans-Samoa, de Noordelijke Marianen, de Amerikaanse Maagdeneilanden, Puerto Rico en het District of Columbia.
Sinds 1940 wordt het aantal afgevaardigden per staat bepaald volgens de Huntington-Hill-methode. Deze methode werd ontwikkeld door Edward Huntington en Joseph Hill. In deze methode worden percentageverschillen tussen de grootte van de districten geminimaliseerd. De methode begint met aan elke staat één zetel toe te kennen. Vervolgens wordt de volgende stap herhaald totdat er geen zetels meer over zijn:
Voor elke staat wordt het geometrisch gemiddelde berekend van de verhouding van het bevolkingsaantal tot het huidig aantal zetels en de verhouding van het bevolkingsaantal tot het aantal zetels als de volgende zetel naar die staat zou gaan. Dit gemiddelde wordt gegeven door de volgende formule: \[\frac{p}{\sqrt{n(n+1)}}\] waarbij $$p$$ het bevolkingsaantal is en $$n$$ het huidig aantal zetels.
De volgende zetel gaat naar de staat waarvoor dit gemiddelde het hoogste is.
Bij de eerste volkstelling in 1790 waren er maar 15 staten en er waren er maar 105 zetels in het Huis van Afgevaardigden. Op dat moment werd de Huntington-Hill-methode nog niet gebruikt, maar als dat wel het geval was geweest, dan had de verdeling er als volgt uitgezien.
Staat | Inwoners | Zetels |
Connecticut | 236841 | 7 |
Delaware | 55540 | 2 |
Georgia | 70835 | 2 |
Kentucky | 68705 | 2 |
Maryland | 278514 | 8 |
Massachusetts | 475327 | 14 |
New Hampshire | 141822 | 4 |
New Jersey | 179570 | 5 |
New York | 331589 | 10 |
North Carolina | 353523 | 10 |
Pennsylvania | 432879 | 12 |
Rhode Island | 68446 | 2 |
South Carolina | 206236 | 6 |
Vermont | 85533 | 3 |
Virginia | 630560 | 18 |
Het bestand uscensus2010.csv1 bevat de resultaten van de volkstellingen in de Verenigde Staten sinds 1910. Het bestand uscensus1790.csv2 bevat de resultaten van de volkstelling in de Verenigde Staten van 1790. Het eerste element van elke rij, is de staat waarmee die rij correspondeert. Voor de hoofding is het eerste element leeg. De elementen in de hoofding geven aan welke kolom overeenkomt met welk jaar.
Gevraagd wordt:
Schrijf een functie volkstelling waaraan de naam van een bestand moet worden meegegeven. Dit moet een CSV-bestand zijn waarbij in de eerste kolom de namen van de staten en de regio's staan en in de daaropvolgende kolommen de aantallen van de volkstellingen. De functie heeft ook nog een tweede optioneel argument dat aangeeft welke kolom uit het CSV-bestand er gebruikt zal worden. Standaard wordt de tweede kolom gebruikt, en heeft de parameter kolom dus de waarde 1. Deze functie geeft dan een dictionary terug die de namen van de staten verbindt met hun bevolkingsaantal, waarbij dit aantal natuurlijk een geheel getal is.
Schrijf een functie zetelverdeling waaraan een dictionary als argument moet doorgegeven worden. Deze dictionary is van hetzelfde formaat als deze die wordt teruggegeven door de functie volkstelling. De functie moet een nieuwe dictionary teruggeven, die elke staat verbindt met het aantal zetels voor die staat. De functie heeft ook nog een optionele tweede parameter totaal die standaard gelijk is aan 435 en die aangeeft hoeveel zetels er in totaal verdeeld worden.
>>> volkstelling('uscensus2010.csv')
{'Mississippi': 1797114, 'Oklahoma': 1657155, ..., 'Maine': 742371}
>>> volkstelling('uscensus2010.csv', kolom=11)
{'Mississippi': 2967297, 'Oklahoma': 3751351, ..., 'Maine': 1328361}
>>> inwoners = volkstelling('uscensus2010.csv', kolom=11)
>>> zetelverdeling(inwoners)
{'Mississippi': 4, 'Oklahoma': 5, ..., 'Maine': 2}