Fördelning av mandat: Skillnad mellan sidversioner
Hoppa till navigering
Hoppa till sök
Hakan (diskussion | bidrag) (Skapade sidan med 'Kategori:Python Kategori:Ma1c Kategori:Aritmetik Kategori:Årskurs 7-9 {{python|Python-hjälp - [https://wikiskola.se/index.php?title{{=}}Kategori:...') |
Hakan (diskussion | bidrag) Ingen redigeringssammanfattning |
||
Rad 3: | Rad 3: | ||
{{malruta| '''Kom igång med programmering i matematiken.''' | {{malruta| '''Kom igång med programmering i matematiken.''' | ||
Målet är att du ska | Målet är att du ska använda ett färdigt program för att fördela mandat i ett val. Du bör läsa koden och skaffa dig en förståelse för hur programmet fungerar. Sedan ska du jämföra programmet med den algoritm som egentligen används vid fördelning av mandat. | ||
Du bör | |||
Målet är inte att du ska lära dig programmering på matematiklektionen men det är oundvikligt att du ändå lär dig lite Python-kod. | Målet är inte att du ska lära dig programmering på matematiklektionen men det är oundvikligt att du ändå lär dig lite Python-kod. | ||
}} | }} | ||
== Undersök hur | == Undersök hur ett Pythonprogram fungerar hanterar bråk== | ||
Det här kodexemplet passar till | 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 === | === Koden === | ||
<pre> | <pre> | ||
#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) | |||
#Till årets val kommer k = 5/6 | |||
k = 5/7 | |||
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) | |||
</pre> | </pre> | ||
=== Credit === | === Credit === | ||
Tomaas Westman skapade programmet. | |||
=== Uppgift === | === Uppgift === | ||
{{uppgruta| ''' | {{uppgruta| '''Hur fungerar programmet''' | ||
1. Studera koden. Vad gör programmet? | |||
: Tips: koden är lång men eftersom det finns nio riksdagspartier upprepas varje moment nio gånger i koden. | |||
2. Kör programmet och jämför resultatet med den befintliga mandatfördelningen. Stämmer det? Om inte, varför? | |||
: Tips: Du behöver mata in de antal röster som partierna fick i förra valet. | |||
}} | }} |
Versionen från 13 augusti 2018 kl. 13.56
Undersök hur ett Pythonprogram fungerar hanterar bråk
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) #Till årets val kommer k = 5/6 k = 5/7 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?
|