Python syntaxerror:
Hej jag ska skapa en buss med menu och jag får upp ett "syntaxerror" när jag försöker test köra koden för att se att den funkar så här långt. Försökte experimentera lite men har fastnat!
Här är koden:
class buss:
passagerare = []
antal_passagerare = 10
print('Hej o varmt välkomen ombord!')
print()
def menu():
print( ''''
1. Lägg till passagerare.
2. visa alla passagerare.
3. beräkna totala åldern.
4. avsluta programmet
''')
def option1():
antal_passagerare = 10
menu()
option = int(input('Välj ett alternativ!'))
while option!=4:
try:
if option ==1:
print('Du får plats med 10 passagerare. Ange nu deras ålder!')
print('Tryck på enter för att forsätta!')
passagerare = input()
passagerare = [10]
for i in range (0,10):
åldern = int(input('Ange passagerares ålder!:' ))
passagerare.append(åldern)
elif option ==2:
print('Visa passagerar listan!')
print(passagerare)
Din exceptionhantering haltar lite, try: ska alltid följas av minst en except:
CurtJ skrev:Din exceptionhantering haltar lite, try: ska alltid följas av minst en except:
Har nu lagt till except, Men får fortfarande upp syntaxerror
Här e koden:
class buss:
passagerare = []
antal_passagerare = 10
print('Hej o varmt välkomen ombord !')
print()
def menu():
print( ''''
1. Lägg till passagerare.
2. visa alla passagerare.
3. beräkna totala åldern.
4. avsluta programmet
''')
def option1():
antal_passagerare = 10
menu()
option = int(input('Välj ett alternativ!'))
while option!=4:
try:
if option ==1:
print('Du får plats med 10 passagerare. Ange nu deras ålder!')
print('Tryck på enter för att forsätta!')
passagerare = input()
passagerare = [10]
for i in range (0,10):
åldern = int(input('Ange passagerares ålder!:' ))
passagerare.append(åldern)
elif option ==2:
print('Visa passagerar listan!')
print(passagerare)
elif option ==3:
counter = 0
for åldern in passagerare:
counter +=1
except:
CurtJ skrev:Din exceptionhantering haltar lite, try: ska alltid följas av minst en except:
löste så att syntaxerror:n försvann men nu funkar inte loopen!!
while option!=4:
True
if option ==1:
print('Du får plats med 10 passagerare. Ange nu deras ålder!')
print('Tryck på enter för att forsätta!')
passagerare = input()
passagerare = [10]
for i in range (0,10):
åldern = int(input('Ange passagerares ålder!:' ))
passagerare.append(åldern)
break
elif option ==2:
print('Visa passagerar listan!')
print(passagerare)
break
elif option ==3:
counter = 0
for åldern in passagerare:
counter +=1
break
Du säger inte på vad sätt den inte funkar, men ett fel är att du aldrig ändrar 'option' i loopen.
Som Laguna säger så behöver du tala om vad som inte fungerar men jag ser åtminstone tre saker du behöver åtgärda
1. Python förutsätter att alla tecken i filen är såkallade ASCII vilket i princip är de amerikanska och då saknas åäö. Eftersom du använder åäö i dina utskrifter så måste du säga åt Python att du har ett annat teckenset. Ett som täcker de svenska tecknen är ISO-8859-1 och sätter du talar om det är att lägga in följande i början på din fil
#!/usr/bin/python
# -*- coding: iso-8859-1 -*-
Det finns andra sätt att göra det men med det här sättet så bör de flesta editorer kunna hantera det.
2. Även om du talar om för Python att du använder ISO-8859-1 så är det inte tillåtet med något annat än ASCII i variabelnamn så din åldern får du döpa om till något annat.
3. Du har en except: till ditt try-block och det är rätt MEN Python förväntar sig något innehåll där och gör du inget annat kan du alltid stoppa in ett "pass" som inte gör något annat än att tala om för Python att du inte vill göra något där.
Om du fortfarande får fel efter ovanstående korrektioner kan du väl tala om vad python säger när du kör. Där får du information om vad som är fel.
Notera att jag inte tolkat vad programmet gör så jag vet inte om det är vettigt eller inte. Jag tittade bara på syntaxen.
Ser nu att jag fortfarande kör version 2 av Python och mina kommentarer om teckenset gäller inte Python version 3 och uppåt som stödjer ASCII och UNICODE (inkl ISO-8859-1) i strängar och som identifierare.
Tittade lite mer på koden och du förutsätter att användaren ska kunna ange ett nytt menyval i while-slingan. Då måste du läsa in valet i slingan och inte före den.
Glöm inte heller att skriva ut summan av åldrarna
Läs mina kommentarer i koden:
class buss: # Klassen används inte så varför finns den?
passagerare = []
antal_passagerare = 10
print('Hej o varmt välkomen ombord !') # Undvik utskrifter i klasser.
print() # Undvik utskrifter bland funktionsdefinitioner. Den ska kanske vara i funktionen menu?
def menu():
print( ''''
1. Lägg till passagerare.
2. visa alla passagerare.
3. beräkna totala åldern.
4. avsluta programmet
''')
def option1(): # Denna funktion anropas inte så varför finns den?
antal_passagerare = 10
menu()
option = int(input('Välj ett alternativ!'))
while option!=4:
True # Denna rad gör ingenting så varför finns den?
if option ==1:
print('Du får plats med 10 passagerare. Ange nu deras ålder!')
print('Tryck på enter för att forsätta!')
passagerare = input() # Listan skapas här men bör istället skapas innan while-loopen.
passagerare = [10] # Listan innehåller nu en 10-åring vilket du troligen inte vill.
for i in range (0,10):
åldern = int(input('Ange passagerares ålder!:' ))
passagerare.append(åldern)
break # Bryter for-loopen efter första inmatningen vilket du troligen inte vill.
elif option ==2:
print('Visa passagerar listan!')
print(passagerare) # NameError: name 'passagerare' is not defined
break # Bryter while-loopen vilket du troligen inte vill.
elif option ==3:
counter = 0
for åldern in passagerare: # NameError: name 'passagerare' is not defined
counter +=1 # Räknar antalet passagerare vilket do troligen inte vill.
break # Bryter for-loopen vilket du troligen inte vill.
# Den sammanlagda åldern på passagerarna skrivs inte ut.