10 svar
1353 visningar
Mercy behöver inte mer hjälp
Mercy 33
Postad: 7 maj 2020 09:36

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")

Skaft 2373 – F.d. Moderator
Postad: 7 maj 2020 09:40 Redigerad: 7 maj 2020 09:40

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.

Mercy 33
Postad: 7 maj 2020 09:56

Ska testa!

Lindehaven 820 – Lärare
Postad: 7 maj 2020 10:26 Redigerad: 7 maj 2020 10:27

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

Skaft 2373 – F.d. Moderator
Postad: 7 maj 2020 10:40
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.

Lindehaven 820 – Lärare
Postad: 7 maj 2020 11:19

Borde skrivit "...inbyggd funktion som inte kan användas som en variabel i denna kontext".

Laguna Online 30484
Postad: 7 maj 2020 11:33
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.

Mercy 33
Postad: 7 maj 2020 12:54 Redigerad: 7 maj 2020 13:02

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?

Lindehaven 820 – Lärare
Postad: 7 maj 2020 13:42

Det program du visat beräknar inte medianen och skriver inte ut den heller.

Mercy 33
Postad: 7 maj 2020 14:01

Ja precis!

Laguna Online 30484
Postad: 7 maj 2020 14:16
Mercy skrev:

Ja precis!

Så då vet du varför du inte får medianen. 

Svara
Close