Fördelning av mandat: Skillnad mellan sidversioner
Hoppa till navigering
Hoppa till sök
Hakan (diskussion | bidrag) |
Hakan (diskussion | bidrag) |
||
Rad 243: | Rad 243: | ||
Programmet använder sig av [https://en.wikipedia.org/wiki/Webster/Sainte-Laguë_method Sainte-Laguë-metoden] | Programmet använder sig av [https://en.wikipedia.org/wiki/Webster/Sainte-Laguë_method Sainte-Laguë-metoden] | ||
{{lista| | |||
<pre> | |||
# Sainte-Lague in Python | |||
# Copyright (C) Gustaf H. | |||
seated = 0 | |||
parties = [ | |||
{'name':'S', 'votes': 1347950, 'seats': 0}, | |||
{'name':'M', 'votes': 848739, 'seats': 0}, | |||
{'name':'KD', 'votes': 286175, 'seats': 0}, | |||
{'name':'C', 'votes': 389672, 'seats': 0}, | |||
{'name':'L', 'votes': 225220, 'seats': 0}, | |||
{'name':'MP', 'votes': 180215, 'seats':0}, | |||
{'name':'SD', 'votes': 848503, 'seats':0}, | |||
{'name':'V', 'votes': 345378, 'seats':0} | |||
]; | |||
while (seated != 39): | |||
record = [] | |||
keepbig = 0 | |||
keepindex = 0 | |||
for party in parties: | |||
if party['seats'] == 0: | |||
record.append((party['votes'] / 1.2) / ((2 * party['seats']) + 1)) | |||
else: | |||
record.append((party['votes']) / ((2 * party['seats']) + 1)) | |||
for index, check in enumerate(record): | |||
if check > keepbig: | |||
keepbig = check | |||
keepindex = index | |||
parties[keepindex]['seats'] += 1 | |||
seated += 1 | |||
print(parties) | |||
</pre> |
Versionen från 17 oktober 2018 kl. 11.15
Undersök hur ett Pythonprogram fördelar mandat
Det här kodexemplet passar till ett tematiskt arbete inför skolval och riksdagsval och är lämpligt att ha i kurserna Ma1a, Ma1b och Ma1c. Det kräver inga förkunskaper i programmering.
Koden
Lista: (klicka expandera till höger)
Credit
Tomaas Westman skapade programmet.
Uppgift
Uppgift |
---|
Hur fungerar programmet
1. Studera koden. Vad gör programmet?
2. Kör programmet och jämför resultatet med den befintliga mandatfördelningen. Stämmer det? Om inte, varför?
|
Förädlad kod
Victors program med listor
Lista: (klicka expandera till höger)
Gustaf Haglunds kod
Programmet använder sig av Sainte-Laguë-metoden
{{lista|
# Sainte-Lague in Python # Copyright (C) Gustaf H. seated = 0 parties = [ {'name':'S', 'votes': 1347950, 'seats': 0}, {'name':'M', 'votes': 848739, 'seats': 0}, {'name':'KD', 'votes': 286175, 'seats': 0}, {'name':'C', 'votes': 389672, 'seats': 0}, {'name':'L', 'votes': 225220, 'seats': 0}, {'name':'MP', 'votes': 180215, 'seats':0}, {'name':'SD', 'votes': 848503, 'seats':0}, {'name':'V', 'votes': 345378, 'seats':0} ]; while (seated != 39): record = [] keepbig = 0 keepindex = 0 for party in parties: if party['seats'] == 0: record.append((party['votes'] / 1.2) / ((2 * party['seats']) + 1)) else: record.append((party['votes']) / ((2 * party['seats']) + 1)) for index, check in enumerate(record): if check > keepbig: keepbig = check keepindex = index parties[keepindex]['seats'] += 1 seated += 1 print(parties)