7 svar
171 visningar
Skruzzi 9 – Fd. Medlem
Postad: 1 nov 2021 19:02

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)
           

CurtJ 1143
Postad: 1 nov 2021 19:30

Din exceptionhantering haltar lite, try: ska alltid följas av minst en except:

Skruzzi 9 – Fd. Medlem
Postad: 2 nov 2021 16:20
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:
           

Skruzzi 9 – Fd. Medlem
Postad: 2 nov 2021 16:35
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

Laguna Online 28443
Postad: 2 nov 2021 21:21

Du säger inte på vad sätt den inte funkar, men ett fel är att du aldrig ändrar 'option' i loopen.

CurtJ 1143
Postad: 2 nov 2021 22:10 Redigerad: 2 nov 2021 22:16

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.

 

CurtJ 1143
Postad: 2 nov 2021 22:43 Redigerad: 2 nov 2021 23:48

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

 

Lindehaven 820 – Lärare
Postad: 3 nov 2021 10:35

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.
Svara Avbryt
Close