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.')
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?
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
Det står inte att det behövs en separat funktion för statistiken.
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.
Då får du samla statistikkoden i en egen funktion och anropa den när menu är lika med 2.
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?
Blir det inte så nu?
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.
Eftersom funktionen inte anropas kan du ta bort den.
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.')