10 svar
106 visningar
anony123 behöver inte mer hjälp
anony123 163 – Fd. Medlem
Postad: 15 sep 2022 19:31 Redigerad: 15 sep 2022 19:33

Längdhoppstävling

Jag vill alltså skapa en meny där 1,2 eller 3 gör olika saker och sedan återvända till menyn men programmet fungerar inte som det ska när jag skriver if meny ==1 följt av nedanstående kod. Jag är inte helt säker på vad min funktion gör heller, den efterfrågar deltagarnas resultat i rätt ordning men villkoret för while verkar jag kunna byta ut mot vad som helst. Dessutom efterfrågar uppgiften en annan funktion som ska kallas statistik men gör inte stat.stdev och stat.mean samma sak?

import statistics
meny=input('Meny ' +
           '1 - Mata in de tävlandes resultat. ' +
           '2 - Se statistik för tidigare inmatade '+
           '3 - Avsluta')
a = int(input('Hur många deltagare: '))
list = []
def inmatning(x):
    while x<a:
        a
for x in range(a):
    varde = int(input('Ange för deltagare ' + str(x+1)+ ': '))
    list.append(varde)
m=statistics.mean(list)
s=statistics.stdev(list)
print( 'Medelvärdet är ' + str(m) + 'm med standardavvikelse ' + str(s) + 'm. Högsta värde var ' + str(max(list)) + 'm och det lägsta ' + str(min(list))+ 'm.')
Laguna Online 30724
Postad: 15 sep 2022 19:50 Redigerad: 15 sep 2022 19:51

Funktionen anropas inte, vad jag kan se. Vad tänkte du ha den till?

Kan du visa uppgiftstexten? Jag vet inte vad en statistikfunktion skulle tillföra här.

Var skriver du if menu == 1?

 

anony123 163 – Fd. Medlem
Postad: 15 sep 2022 19:51

Till en längdhoppstävling vill man spara hopparnas värden för att senare ta ut statistik på dessa. Programmet har en dialog enligt följande:

Meny
1 - Mata in de tävlandes resultat.
2 - Se statistik för tidigare inmatade
3 - Avsluta
Ditt val: 1
Hur många tävlande: 10
Ange för deltagare 1: 8.16
Ange för deltagare 2: 7.48
Ange för deltagare 3: .........
...<sedan tillbaka till menyn>

Meny
1 - Mata in de tävlandes resultat.
2 - Se statistik för tidigare inmatade
3 - Avsluta
Ditt val: 2
Medelvärdet är 8.01m med standardavvikelse 0.56m. Högsta värde var 8.16m och det lägsta 7.13m

Laguna Online 30724
Postad: 15 sep 2022 20:25

Det står inte att det behövs en separat funktion för statistiken.

anony123 163 – Fd. Medlem
Postad: 15 sep 2022 20:27

Sorry det här stod längst ned:

Följande är kraven på programmet:
Det ska ha en funktion inmatning() och en funktion statistik() med lämpliga parametrar och eventuell utdata.
I huvudprogrammet placeras lämpligen menyvalet. Detta exempel innehåller mycket övning på villkor och slingor.
Ni ska *inte* använda en variabel för varje hoppresultat.

Laguna Online 30724
Postad: 15 sep 2022 20:29

Då får du samla statistikkoden i en egen funktion och anropa den när menu är lika med 2.

anony123 163 – Fd. Medlem
Postad: 15 sep 2022 20:31 Redigerad: 15 sep 2022 20:35
Laguna skrev:

Funktionen anropas inte, vad jag kan se. Vad tänkte du ha den till?

Jag ville att deltagarna skulle komma i rätt ordning, alltså Ange för deltagare 1: (och sedan 2 osv). Finns det något smidigare sätt att göra det?

Laguna Online 30724
Postad: 15 sep 2022 20:40

Blir det inte så nu?

anony123 163 – Fd. Medlem
Postad: 15 sep 2022 20:44

Jo men jag skrev (while x<a, a) och jag kan byta ut värdet på a utan att någonting ändras och borde därför kunna ta bort en del kod.

Laguna Online 30724
Postad: 15 sep 2022 20:50

Eftersom funktionen inte anropas kan du ta bort den.

anony123 163 – Fd. Medlem
Postad: 15 sep 2022 21:00

Ok tack! Nu ser min kod ut såhär och den fungerar bara för meny ==1, vet fortfarande inte hur jag får den att återvända till menyn.

import statistics
import sys
meny=int(input('''Meny:
1 - Mata in de tävlandes resultat
2 - Se statistik för tidigare inmatade 
3 - Avsluta
'''))
if meny == 1:
    print('Ditt val: 1')
else:
    print('Ogiltigt val!')
    sys.exit()
a = int(input('Hur många deltagare: '))
list = []
for x in range(a):
    varde = int(input('Ange för deltagare ' + str(x+1)+ ': '))
    list.append(varde)
m=statistics.mean(list)
s=statistics.stdev(list)
print( 'Medelvärdet är ' + str(m) + 'm med standardavvikelse ' + str(s) + 'm. Högsta värde var ' + str(max(list)) + 'm och det lägsta ' + str(min(list))+ 'm.')






Svara
Close