Medelvärde och median
Hej!
Jag undrar varför kan inte min kod räkna medelvärde och median enligt uppgiften:
Skapa en lista med alla heltal från 1 till 100 (tips: använd funktionen range)
Använd slicing för att plocka ut de 10 talen som finns i mitten av listan
Skriv ut listan med de 10 tal du plockat ut
Beräkna och skriv ut medel- och medianvärde för de 10 talen
min kod är:
# Skapa en lista med hjälp av range (alla heltal från 0 till 100)
l = list(range(0, 101))
# Skriv ut listan
print(l)
# plocka och skriv ut de 10 mitten talen som finns i mitten av listan
s = l[45:55]
# Skriv ut listan
print("10 mitten talen är:")
print(s)
# Beräkna summan
for n in l:
sum += n
# Beräkna medelvärdet och median för de 10 mitten talen
avg = sum / len(l)
# Skriv ut resultatet
print("Medelvärdet är {0:.2f}".format(avg), "medianen är")
Du borde få ett felmeddelande som hintar om problemet. Det ser ut som att första gången programmet stöter på din variabel "sum" så ska den ökas med n. Men från vad? Du bör nog lägga till att sum = 0 innan du börjar öka den.
Ska testa!
Det första felmeddelandet blir:
TypeError: unsupported operand type(s) for +=: 'builtin_function_or_method' and 'int'
Detta beror på att sum är en inbyggd funktion som inte kan användas som en variabel.
Byt namn på variabeln till exvis nsum.
Nästa felmeddelande blir då:
NameError: name 'nsum' is not defined
Detta beror på att nsum försöker läsas innan variablen finns.
Skapa variabeln först genom att tilldela den ett värde.
nsum = 0
Lindehaven skrev:Detta beror på att sum är en inbyggd funktion som inte kan användas som en variabel.
Jodå, det kan visst användas som variabel. Sen kan man tycka att det inte är det bästa variabelnamnet, men om man inte tänkt använda sum-funktionen och det inte handlar om något större kodprojekt är det väl ingen skada skedd.
Borde skrivit "...inbyggd funktion som inte kan användas som en variabel i denna kontext".
Lindehaven skrev:Borde skrivit "...inbyggd funktion som inte kan användas som en variabel i denna kontext".
Om man sätter sum till 0 i början så borde det fungera även här.
Hej alla och tack för ert svar!
Jo det funkade med nsum som variabel men då får jag ej median vet inte varför?
Det program du visat beräknar inte medianen och skriver inte ut den heller.
Ja precis!
Mercy skrev:Ja precis!
Så då vet du varför du inte får medianen.