Fördelning av mandat: Skillnad mellan sidversioner
Hoppa till navigering
Hoppa till sök
Hakan (diskussion | bidrag) |
(→Koden) |
||
| Rad 37: | Rad 37: | ||
R = int(R) | R = int(R) | ||
# | #Förra valet var k=5/7 | ||
k = 5/ | k = 5/6 | ||
k= float(k) | k= float(k) | ||
Versionen från 14 september 2018 kl. 08.36
Undersök hur ett Pythonprogram som 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
#Val-program, inputs antalet röster för de åtta riksdagspartierna
V = input("V:")
V = int(V)
S = input("S:")
S = int(S)
M_P = input("MP:")
M_P = int(M_P)
C = input("C:")
C = int(C)
L = input("L:")
L = int(L)
M = input("M:")
M = int(M)
K_D = input("KD:")
K_D = int(K_D)
S_D = input("SD:")
S_D = int(S_D)
R = V + S + M_P + C + L + M + K_D + S_D
R = int(R)
#Förra valet var k=5/7
k = 5/6
k= float(k)
JT_V = k*V
JT_V = float(JT_V)
JT_S = k*S
JT_S = float(JT_S)
JT_M_P = k*M_P
JT_M_P = float(JT_M_P)
JT_C = k*C
JT_C = float(JT_C)
JT_L = k*L
JT_L = float(JT_L)
JT_M = k*M
JT_M = float(JT_M)
JT_K_D = k*K_D
JT_K_D = float(JT_K_D)
JT_S_D = k*S_D
JT_S_D = float(JT_S_D)
mandat = 349
mandat = int(mandat)
#Korrigeringarna efter ett mandat blivit fördelat
kV = 1
kV = float(kV)
kS = 1
kS = float(kS)
kM_P = 1
kM_P = float(kM_P)
kC = 1
kC = float(kC)
kL = 1
kL = float(kL)
kM = 1
kM = float(kM)
kK_D = 1
kK_D = float(kK_D)
kS_D = 1
kS_D = float(kS_D)
#Varje partis mandat
mV = 0
mS = 0
mM_P = 0
mC = 0
mL = 0
mM = 0
mK_D = 0
mS_D = 0
while mandat > 0:
if JT_S == max(JT_V, JT_S, JT_M_P, JT_C, JT_L, JT_M, JT_K_D, JT_S_D):
mS += 1
mandat -= 1
kS = kS + 2
JT_S = S/kS
elif JT_M == max(JT_V, JT_S, JT_M_P, JT_C, JT_L, JT_M, JT_K_D, JT_S_D):
mM += 1
mandat -= 1
kM = kM + 2
JT_M = M/kM
elif JT_S_D == max(JT_V, JT_S, JT_M_P, JT_C, JT_L, JT_M, JT_K_D, JT_S_D):
mS_D += 1
mandat -= 1
kS_D = kS_D + 2
JT_S_D = S_D/kS_D
elif JT_V == max(JT_V, JT_S, JT_M_P, JT_C, JT_L, JT_M, JT_K_D, JT_S_D):
mV += 1
mandat -= 1
kV = kV + 2
JT_V = V/kV
elif JT_M_P == max(JT_V, JT_S, JT_M_P, JT_C, JT_L, JT_M, JT_K_D, JT_S_D):
mM_P += 1
mandat -= 1
kM_P = kM_P + 2
JT_M_P = M_P/kM_P
elif JT_C == max(JT_V, JT_S, JT_M_P, JT_C, JT_L, JT_M, JT_K_D, JT_S_D):
mC += 1
mandat -= 1
kC = kC + 2
JT_C = C/kC
elif JT_L == max(JT_V, JT_S, JT_M_P, JT_C, JT_L, JT_M, JT_K_D, JT_S_D):
mL += 1
mandat -= 1
kL = kL + 2
JT_L = L/kL
elif JT_K_D == max(JT_V, JT_S, JT_M_P, JT_C, JT_L, JT_M, JT_K_D, JT_S_D):
mK_D += 1
mandat -= 1
kK_D = kK_D + 2
JT_K_D = K_D/kK_D
print("Totalt antal röster:",R)
print("Mandat till V:", mV)
print("Mandat till S:", mS)
print("Mandat till MP:", mM_P)
print("Mandat till C:", mC)
print("Mandat till L:", mL)
print("Mandat till M:", mM)
print("Mandat till KD:", mK_D)
print("Mandat till SD:", mS_D)
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?
|

