Permalänk
Medlem

Buggar i koden

Hej, är ny till programmering och undrar om någon kan hjälpa mig med att lösa buggarna i min kod.
har kämpat med detta nu i tre dagar och förstår inte vad det är som blir fel i koden. använder python som ni ser nedan i min kod.
detta är min kod och får error på tre linjer, kan någon hjälpa mig att lösa dem..?

class Bus:
def __init__(self):
self.passengers = []

def show_passengers(self):
print("Passagerare på bussen:")
if self.passengers:
for passenger in self.passengers:
print("Ålder:", passenger)
else:
print("Inga passagerare på bussen")

def add_passenger(self,age):
if len(self.passengers) < 25:
self.passengers.append(age)
print("Passagerare med ålder", age, "har lagts till")
else:
print("Bussen är full")

def remove_passenger(self, age):
if age in self.passengers:
self.passengers.remove(age)
print("Passagerare med ålder", age, "har stigit av")

def show_menu(self):
print("Välj en ålder: ")
print("1. Lägg till passagerare")
print("2. Ta bort passagerare")
print("3. Visa passagerare på bussen")
print("0. Avsluta programmet")

def run():
bus = Bus()
print("välkommen")

while(True):
show_menu()
choice = input("tryck in ett val: ")

match choice:
case "1":
age = int(input("skriv ålder på passageraren som läggs till"))
bus.add_passenger(age)
case "2":
age = int(input("Skriv in åldern för passageraren som stiger av: "))
bus.remove_passenger(age)
case "3":
bus.show_passengers()
case "0":
print("Avsluatr program.")
break
case _:
print("Ogiltigt val, vänligen försök igen")

run()

Permalänk
Medlem
  • Flytta metoden run() inuti klassen Bus. Du behöver indentera koden för att placera run() inuti klassen.

  • Du behöver ändra raden show_menu() till self.show_menu() för att anropa metoden från instansen av Bus.

class Bus: def __init__(self): self.passengers = [] def show_passengers(self): print("Passagerare på bussen:") if self.passengers: for passenger in self.passengers: print("Ålder:", passenger) else: print("Inga passagerare på bussen") def add_passenger(self, age): if len(self.passengers) < 25: self.passengers.append(age) print("Passagerare med ålder", age, "har lagts till") else: print("Bussen är full") def remove_passenger(self, age): if age in self.passengers: self.passengers.remove(age) print("Passagerare med ålder", age, "har stigit av") def show_menu(self): print("Välj en ålder: ") print("1. Lägg till passagerare") print("2. Ta bort passagerare") print("3. Visa passagerare på bussen") print("0. Avsluta programmet") def run(self): bus = Bus() print("Välkommen") while True: self.show_menu() choice = input("Tryck in ett val: ") match choice: case "1": age = int(input("Skriv ålder på passageraren som läggs till: ")) bus.add_passenger(age) case "2": age = int(input("Skriv in åldern för passageraren som stiger av: ")) bus.remove_passenger(age) case "3": bus.show_passengers() case "0": print("Avslutar program.") break case _: print("Ogiltigt val, vänligen försök igen") bus = Bus() bus.run()

`

Permalänk
Medlem

Har gjort om koden extremt mycket idag för att matcha kraven för inlämning. Den ser nu ut såhär men jag får fortfarande error på linje 1 och alla linjer med elif, blir galen, varför fungerar inte mina elif?
har lagt run() i klassen som du sa (Tack så myclet!)
men nu vad gör jag nu ? brister i min kunskap här extrremt mycket..

class Bus:
print("Välkommen till bussimulatorn!")
def run(self):

def __init__(self):
self.passengers = []
self.antal_passagerare = 25

def add_passenger(self,age):
if len(self.passengers) < self.antal_passagerare:
self.passengers.append(age)
print("Passagerare tillagd")
else:
print("Bussen är full.")

def calculate_total_age(self):
total_age = sum(self.passengers)
return total_age
print("Totala ålder på passagerarna: ", total_age)

def print_passengers(self):
print("Passagerarnas åldrar är: ", self.passengers)

while(True):
print("\nMenu:")
print("1. Add passenger by age")
print("2. Calculate total age:")
print("3. Print passenger list:")
print("4. Exit program")

choice = input("Enter your choice 1-4: ")
if choice == "1":
age = int(input("skriv in din ålder: "))
self.add_passenger()
break

elif choice == "2":
self.calculate_total_age()
break

elif choice == "3":
self.print_passengers()
break

elif choice == "4":
print("Avslutar program...")
break

else:
print("Ogiltigt svar,vänligen försök igen.")

bus = Bus()

bus.run()

har skrivit om koden
Permalänk
Skrivet av Python14:

tack så mycket för ditt svar. Har gjort en massa ändringar i koden idag så slutresultatet matchar inlämningen men nu uppstår det en annan bugg. Har lagt run() inut klassen som du sagt. (tack!)
men problemet nu är att den visar (self is not defined) när man kommer ner till de tre "elif". Blir galen. Den visar även fel på linje 1? Vad gör jag fel, vet inte hur jag ska ta reda på felet heller, brister i kunskap här..

[...]

Posta gärna de exakta felmeddelandena du får så kan vi hjälpa dig. Lutops kod funkar för mig.

Permalänk
Medlem

Se över indenteringen av din kod. Python förlitar sig på indentering istället för olika klamrar för olika block. Och när du postar kod, markera det som kod så att indentering bibehålls (code inom klamrar). Annars blir det jobbigt för andra som vill hjälpa. Exemplet från Lutop funkar utmärkt här.

Permalänk
Medlem

Detta är felmeddelandena jag får:
Traceback (most recent call last):
File "main.py", line 1, in <module>
class Bus:
File "main.py", line 41, in Bus
print(self.calculate_total_age())
NameError: name 'self' is not defined

och det gäller nedan kod:

class Bus:
print("Välkommen till bussimulatorn!")
def run(self):

def __init__(self):
self.passengers = []
self.antal_passagerare = 25

def add_passenger(self,age):
if len(self.passengers) < self.antal_passagerare:
self.passengers.append(age)
print("Passagerare tillagd")
else:
print("Bussen är full.")

def calculate_total_age(self):
total_age = sum(self.passengers)
return total_age
print("Totala ålder på passagerarna: ", total_age)

def print_passengers(self):
print("Passagerarnas åldrar är: ", self.passengers)

while(True):
print("\nMenu:")
print("1. Add passenger by age")
print("2. Calculate total age:")
print("3. Print passenger list:")
print("4. Exit program")

choice = input("Enter your choice 1-4: ")
if choice == "1":
age = int(input("skriv in din ålder: "))
self.add_passenger()
break

elif choice == "2":
self.calculate_total_age()
break

elif choice == "3":
self.print_passengers()
break

elif choice == "4":
print("Avslutar program...")
break

else:
print("Ogiltigt svar,vänligen försök igen.")

bus = Bus()

bus.run()

ber om ursäkt är ny här och vet inte riktigt hur jag postar kod så indenteringen behålls..

Permalänk
Medlem

Prova detta:

Permalänk
Medlem

class Bus: print("Välkommen till bussimulatorn!") def run(self): def __init__(self): self.passengers = [] self.antal_passagerare = 25 def add_passenger(self,age): if len(self.passengers) < self.antal_passagerare: self.passengers.append(age) print("Passagerare tillagd") else: print("Bussen är full.") def calculate_total_age(self): total_age = sum(self.passengers) return total_age print("Totala ålder på passagerarna: ", total_age) def print_passengers(self): print("Passagerarnas åldrar är: ", self.passengers) while(True): print("\nMenu:") print("1. Add passenger by age") print("2. Calculate total age:") print("3. Print passenger list:") print("4. Exit program") choice = input("Enter your choice 1-4: ") if choice == "1": age = int(input("skriv in din ålder: ")) self.add_passenger() break elif choice == "2": self.calculate_total_age() break elif choice == "3": self.print_passengers() break elif choice == "4": print("Avslutar program...") break else: print("Ogiltigt svar,vänligen försök igen.") bus = Bus() bus.run()

Permalänk
Medlem

wow det gick, tack så mycket nimbus, här är då koden med indenteringen jag har lagt.. vad säger du ?

Permalänk
Medlem
Skrivet av Python14:

wow det gick, tack så mycket nimbus, här är då koden med indenteringen jag har lagt.. vad säger du ?

Snyggt!

Permalänk
Medlem

Man lär sig något nytt varje dag!
men varför får jag felmeddelanden?

Traceback (most recent call last):
File "main.py", line 1, in <module>
class Bus:
File "main.py", line 39, in Bus
self.calculate_total_age()
NameError: name 'self' is not defined

detta är felmeddelandet

Permalänk
Medlem

Om du kollar på din indentering så är det lite fel där bland annat. Kika lite mer på exemplet från Lutop och utgå från det. Sen kan du få lite hjälp med sådana detaljer om du använder en editor med stöd för Python, t.ex. Visual Studio Code.

Permalänk
Medlem
Skrivet av Python14:

Man lär sig något nytt varje dag!
men varför får jag felmeddelanden?

Traceback (most recent call last):
File "main.py", line 1, in <module>
class Bus:
File "main.py", line 39, in Bus
self.calculate_total_age()
NameError: name 'self' is not defined

detta är felmeddelandet

Utan att någonsin gjort något i python så verkar du starta deklarationen av run längst upp men sen skriva det faktiska innehållet längst ner. Nedan tycker jag ser vettigare ut.

class Bus: def __init__(self): self.passengers = [] self.antal_passagerare = 25 def add_passenger(self,age): if len(self.passengers) < self.antal_passagerare: self.passengers.append(age) print("Passagerare tillagd") else: print("Bussen är full.") def calculate_total_age(self): total_age = sum(self.passengers) return total_age print("Totala ålder på passagerarna: ", total_age) def print_passengers(self): print("Passagerarnas åldrar är: ", self.passengers) def run(self): print("Välkommen till bussimulatorn!") while(True): print("\nMenu:") print("1. Add passenger by age") print("2. Calculate total age:") print("3. Print passenger list:") print("4. Exit program") choice = input("Enter your choice 1-4: ") if choice == "1": age = int(input("skriv in din ålder: ")) self.add_passenger() break elif choice == "2": self.calculate_total_age() break elif choice == "3": self.print_passengers() break elif choice == "4": print("Avslutar program...") break else: print("Ogiltigt svar,vänligen försök igen.") bus = Bus() bus.run()

Permalänk
Medlem

Här är ett exempel från en editor som förstår Python-syntax. Du använder t.ex. två spaces för det mesta, men på många ställen endast ett. Återigen, exemplet tidigare var korrekt indenterat och utgör ett bra exempel på hur det ska se ut. Men det är några andra fel också.

Permalänk
Medlem

okej så nu kommer jag här igen, detta är isch slutresultatet av min kod till min inlämning (kommentarer, print satser mm ska tillkomma)
men mitt problem är nu att listan jag skapat ska max få innehålla 25 element.
och jag måste då testa detta någonstans i koden.. som ni ser har jag försökt göra det i "def add_passenger"
listan ska vara tom eftersom passagerarna ska skriva in sina åldrar men när det nått 25 olika åldrar ska det skrivas ut att "bussen är full"

import replit from getkey import getkey, keys class Bus: passenger = [25] antal_passenger = 0 def run(self): print("Välkommen till bussimulatorn") def add_passenger(): replit.clear() b = Bus.passenger.append(int(input("Skriv in din ålder: "))) while(True): if b <= Bus.antal_passenger: print("Passagerare tillagd") Bus.antal_passenger += 1 break elif b > Bus.antal_passenger: print("Bussen är full.") Bus.antal_passenger += 1 def print_bus(): replit.clear() print("passagerarlista: ", Bus.passenger) input("Press Enter to continue...") def calc_total_age(): replit.clear() total_age = 0 for x in range(len(Bus.passenger)): total_age += Bus.passenger[x] print("Totala ålder på passagerarna: ", total_age) input("Press Enter to continue...") def ExitProgram(): replit.clear() print("Avslutar program...") input("Press enter to continue") menuOptions = ["Lägg till passagerare\t", "Se passagerarlista\t", "Totala ålder\t", "Avsluta program\t"] menuSelected = 0 while(True): replit.clear() if menuSelected == 0: print(menuOptions[0] + "<--") print(menuOptions[1]) print(menuOptions[2]) print(menuOptions[3]) elif menuSelected == 1: print(menuOptions[0]) print(menuOptions[1] + "<--") print(menuOptions[2]) print(menuOptions[3]) elif menuSelected == 2: print(menuOptions[0]) print(menuOptions[1]) print(menuOptions[2] + "<--") print(menuOptions[3]) elif menuSelected == 3: print(menuOptions[0]) print(menuOptions[1]) print(menuOptions[2]) print(menuOptions[3] + "<--") keyPressed = getkey() if keyPressed == keys.DOWN and menuSelected + 1 != len(menuOptions): menuSelected += 1 elif keyPressed == keys.UP and menuSelected >= 1: menuSelected -=1 elif keyPressed == keys.ENTER: if menuSelected == 0: add_passenger() elif menuSelected == 1: print_bus() elif menuSelected == 2: calc_total_age() elif menuSelected == 3: ExitProgram() bus = Bus() bus.run()

Permalänk
Medlem

Fundera på logiken i add_passenger. Kanske förklara för oss hur du, rad för rad, tror att den fungerar.

Permalänk
Medlem
Skrivet av pine-orange:

Fundera på logiken i add_passenger. Kanske förklara för oss hur du, rad för rad, tror att den fungerar.

Okej så jag tänkte att jag skulle lägga while loop med bool för att kunna se när den överstiger 25 personer, där av raden med If satsen. nu ser jag att jag kanske skulle skrivit listans namn istället för add_passenger ?
Print för att säga till vad som sker för användaren
Raden under print för att den ska lägga till passagerare när användaren väljer valet ”lägg till passagerare” och break så loopen inte skriver ut oändligt många ”passagerare tillagd”
Elif så att om det överstigit 25 ska det även kan komma ut en print sats om bussen är full.

Hoppas inte jag har varit otydlig..
Listan borde egentligen stå tom eftersom den ska fyllas med element från användare?
Men till slut tänkte jag att kanske det ska stå 25 så jag testade det också..

Permalänk
Medlem
Skrivet av Python14:

Okej så jag tänkte att jag skulle lägga while loop med bool för att kunna se när den överstiger 25 personer, där av raden med If satsen. nu ser jag att jag kanske skulle skrivit listans namn istället för add_passenger ?
Print för att säga till vad som sker för användaren
Raden under print för att den ska lägga till passagerare när användaren väljer valet ”lägg till passagerare” och break så loopen inte skriver ut oändligt många ”passagerare tillagd”
Elif så att om det överstigit 25 ska det även kan komma ut en print sats om bussen är full.

Hoppas inte jag har varit otydlig..
Listan borde egentligen stå tom eftersom den ska fyllas med element från användare?
Men till slut tänkte jag att kanske det ska stå 25 så jag testade det också..

Men är det verkligen det som den jämför i den if-satsen? Kolla igen vad den jämför med listans längd.

Visa signatur

| MSI B650 Tomahawk | Ryzen 7 9800X3D | ASUS RTX 3070 | 64GB DDR5 6000MHz | MSI MPG A1000G | Samsung 970 Evo M.2 1TB + 2x WD Black SN850X 2TB|

Permalänk
Medlem
Skrivet av BrutalSwede:

Men är det verkligen det som den jämför i den if-satsen? Kolla igen vad den jämför med listans längd.

Men jag vet inte vart jag ska skriva in listans längd någonstans.. det är lite där jag fastnar till och börja med

Permalänk
Medlem
Skrivet av Python14:

Men jag vet inte vart jag ska skriva in listans längd någonstans.. det är lite där jag fastnar till och börja med

Du läser in passagerarens ålder i variabeln "b", och sedan kollar du om deras ålder är större eller mindre än antalet passagerare.

Är det verkligen det du vill göra?

Sedan lägger du till 1 till antalet passagerare oavsett.

Ska det gå att ändra listans längd när programmet körs? Annars kan du ju bara ha det i en konstant variabel någonstans som du använder för att kolla om "antal_passagerare + 1 <= MAX_PASSAGERARE"

Visa signatur

| MSI B650 Tomahawk | Ryzen 7 9800X3D | ASUS RTX 3070 | 64GB DDR5 6000MHz | MSI MPG A1000G | Samsung 970 Evo M.2 1TB + 2x WD Black SN850X 2TB|

Permalänk
Medlem
Skrivet av BrutalSwede:

Du läser in passagerarens ålder i variabeln "b", och sedan kollar du om deras ålder är större eller mindre än antalet passagerare.

Är det verkligen det du vill göra?

Sedan lägger du till 1 till antalet passagerare oavsett.

Ska det gå att ändra listans längd när programmet körs? Annars kan du ju bara ha det i en konstant variabel någonstans som du använder för att kolla om "antal_passagerare + 1 <= MAX_PASSAGERARE"

Nej jag vill endast att programmet ska informera om listan nått 25, coh då skriva ut bussen är full.
Listan ska inte kunna gå att ändras utan 25 är max.
Okej så jag ska lämna passagerare [] tomt uppe vid klassen för att sedan skriva en variabel eller ska jag skriva passagerare [25]?
Märker att jag nog tänkt väldigt fel i detta momentet.. vad besviken man blir.

Permalänk
Medlem

Du kan om du är osäker skriva passenger=[30]. Det enda som händer då är att du slösar 5 poster minne, men du skriver förhoppningsvis inte över minne som tillhör någon annan variabel (efter passagerare ligger det ju andra saker i minnet). Du skall ju fylla 0-24 med 25 poster, men om du missar if-satsen kan det ju hända att du skriver in en 26e post. När du sedan fått fart på ditt program kan du lägga in en debug-utskrift som talar om hur stor passenger[] blir och stämma av att du verkligen håller längden 25. Det är just det sistnämnda som du inte har kläm på ännu, att stämma av antal_passenger med 25, samt att inte addera till denna variabel när bussen är full ! (Detta sista krav gör att du har fel på två rader i ditt program.) Bara att nöta på, så får du till det till slut.

Personliga tankar:
Om phyton: Jag får LISP-vibbar; men istället för parentes-hell så har vi space-hell.
Att just den fasen av programmering som du befinner dig i nu är den roligaste, dvs att progammet är färdigskrivet och man kan börja göra små justeringar som förändrar programmet radikalt

Permalänk
Medlem
Skrivet av mc68000:

Du kan om du är osäker skriva passenger=[30]. Det enda som händer då är att du slösar 5 poster minne, men du skriver förhoppningsvis inte över minne som tillhör någon annan variabel (efter passagerare ligger det ju andra saker i minnet). Du skall ju fylla 0-24 med 25 poster, men om du missar if-satsen kan det ju hända att du skriver in en 26e post. När du sedan fått fart på ditt program kan du lägga in en debug-utskrift som talar om hur stor passenger[] blir och stämma av att du verkligen håller längden 25. Det är just det sistnämnda som du inte har kläm på ännu, att stämma av antal_passenger med 25, samt att inte addera till denna variabel när bussen är full ! (Detta sista krav gör att du har fel på två rader i ditt program.) Bara att nöta på, så får du till det till slut.

Personliga tankar:
Om phyton: Jag får LISP-vibbar; men istället för parentes-hell så har vi space-hell.
Att just den fasen av programmering som du befinner dig i nu är den roligaste, dvs att progammet är färdigskrivet och man kan börja göra små justeringar som förändrar programmet radikalt

I Python så gör passengers = [25] att du skapar en lista med ett element i.
Jag hade istället skapat en tom lista passengers = [] och sen använt .append(ålder). Verifiera sedan längden på listan mha len(passengers).

Permalänk
Medlem
Skrivet av Python14:

Nej jag vill endast att programmet ska informera om listan nått 25, coh då skriva ut bussen är full.
Listan ska inte kunna gå att ändras utan 25 är max.
Okej så jag ska lämna passagerare [] tomt uppe vid klassen för att sedan skriva en variabel eller ska jag skriva passagerare [25]?
Märker att jag nog tänkt väldigt fel i detta momentet.. vad besviken man blir.

I din första post i den här tråden har du denna funktionen:

def add_passenger(self,age): if len(self.passengers) < 25: self.passengers.append(age) print("Passagerare med ålder", age, "har lagts till") else: print("Bussen är full")

Den gör precis det du vill om jag inte missförstår dig, så varför har du ändrat den?

Visa signatur

EndeavourOS: Your search for the best Arch distro ends here
7800X3D » RX6950XT » G.SKILL 32GB » LG OLED42C35LA

Permalänk
Medlem

import replit from getkey import getkey, keys class Bus: passenger = [] antal_passenger = 0 def run(self): print("Välkommen till bussimulatorn") def add_passenger(self, age): if len(self.passenger) < 25: self.passenger.append(age) print("Skriv in din ålder") elif len(self.passenger) > 25: print("Bussen är full") def print_bus(): replit.clear() print("passagerarlista: ", Bus.passenger) input("Press Enter to continue...") def calc_total_age(): replit.clear() total_age = 0 for x in range(len(Bus.passenger)): total_age += Bus.passenger[x] print("Totala ålder på passagerarna: ", total_age) input("Press Enter to continue...") def ExitProgram(): replit.clear() print("Avslutar program...") input("Press enter to continue") menuOptions = ["Lägg till passagerare\t", "Se passagerarlista\t", "Totala ålder\t", "Avsluta program\t"] menuSelected = 0 while(True): replit.clear() if menuSelected == 0: print(menuOptions[0] + "<--") print(menuOptions[1]) print(menuOptions[2]) print(menuOptions[3]) elif menuSelected == 1: print(menuOptions[0]) print(menuOptions[1] + "<--") print(menuOptions[2]) print(menuOptions[3]) elif menuSelected == 2: print(menuOptions[0]) print(menuOptions[1]) print(menuOptions[2] + "<--") print(menuOptions[3]) elif menuSelected == 3: print(menuOptions[0]) print(menuOptions[1]) print(menuOptions[2]) print(menuOptions[3] + "<--") keyPressed = getkey() if keyPressed == keys.DOWN and menuSelected + 1 != len(menuOptions): menuSelected += 1 elif keyPressed == keys.UP and menuSelected >= 1: menuSelected -=1 elif keyPressed == keys.ENTER: if menuSelected == 0: add_passenger() elif menuSelected == 1: print_bus() elif menuSelected == 2: calc_total_age() elif menuSelected == 3: ExitProgram() bus = Bus() bus.run()

varför får jag inte det att fungera nu då??? det är inte kul längre när man suttit i flera dagar med en såhär liten del av hela sitt program man byggt, som man inte löser. Då är man mer eller mindre panikslagen eftersom jag inte kommer klara kursen förmodligen om inte denna biten löser sig.
den indikerar fel på linje 71 har testat lägg till både self och age

Permalänk
Medlem

snälla någon här inne hur hade ni skrivit den? jag sitter i flera timmar och försöker lösa den men det går inte jag fattar inte vad jag gör fel, min kod ska vara inne om två dagar

Permalänk
Medlem

Har testat skriva den såhär nu men den vill fortfarande inte hålla koll om listans element, kan skriva in 100 olika åldrar den sätter aldrig stop vid 25..:(

import replit from getkey import getkey, keys class Bus: passenger = [] antal_passenger = 0 def run(self): print("Välkommen till bussimulatorn") pass def add_passenger(): replit.clear() age = input("Skriv in din ålder: ") Bus.passenger.append(int(age)) if len(Bus.passenger) == 25: print("Bussen är full") def print_bus(): replit.clear() print("passagerarlista: ", Bus.passenger) input("Press Enter to continue...") def calc_total_age(): replit.clear() total_age = 0 for x in range(len(Bus.passenger)): total_age += Bus.passenger[x] print("Totala ålder på passagerarna: ", total_age) input("Press Enter to continue...") def exit_program(): replit.clear() print("Avslutar program...") input("Press enter to continue") menuOptions = ["Lägg till passagerare\t", "Se passagerarlista\t", "Totala ålder\t", "Avsluta program\t"] menuSelected = 0 while(True): replit.clear() if menuSelected == 0: print(menuOptions[0] + "<--") print(menuOptions[1]) print(menuOptions[2]) print(menuOptions[3]) elif menuSelected == 1: print(menuOptions[0]) print(menuOptions[1] + "<--") print(menuOptions[2]) print(menuOptions[3]) elif menuSelected == 2: print(menuOptions[0]) print(menuOptions[1]) print(menuOptions[2] + "<--") print(menuOptions[3]) elif menuSelected == 3: print(menuOptions[0]) print(menuOptions[1]) print(menuOptions[2]) print(menuOptions[3] + "<--") keyPressed = getkey() if keyPressed == keys.DOWN and menuSelected + 1 != len(menuOptions): menuSelected += 1 elif keyPressed == keys.UP and menuSelected >= 1: menuSelected -=1 elif keyPressed == keys.ENTER: if menuSelected == 0: add_passenger() elif menuSelected == 1: print_bus() elif menuSelected == 2: calc_total_age() elif menuSelected == 3: exit_program() bus = Bus() bus.run()

Permalänk

Förstår att det är stressigt med inlämningsuppgift med snar deadline, men försök att ta det lite lugnt.
Du lyckades lösa problemet med din add_passenger funktion men introducerade istället ett nytt. Förstod du varför det inte fungerade med self och age?

Koden körs steg för steg uppifrån och ned. När borde du i så fall kontrollera antalet passagerare på bussen för att inte släppa på fler än 25? (Just nu kör du en kontroll i slutet av funktionen för att se om antalet passagerare är exakt 25.)

def add_passenger(): replit.clear() age = input("Skriv in din ålder: ") Bus.passenger.append(int(age)) if len(Bus.passenger) == 25: print("Bussen är full")

Permalänk
Medlem
Skrivet av Philoslothical:

Förstår att det är stressigt med inlämningsuppgift med snar deadline, men försök att ta det lite lugnt.
Du lyckades lösa problemet med din add_passenger funktion men introducerade istället ett nytt. Förstod du varför det inte fungerade med self och age?

Koden körs steg för steg uppifrån och ned. När borde du i så fall kontrollera antalet passagerare på bussen för att inte släppa på fler än 25? (Just nu kör du en kontroll i slutet av funktionen för att se om antalet passagerare är exakt 25.)

def add_passenger(): replit.clear() age = input("Skriv in din ålder: ") Bus.passenger.append(int(age)) if len(Bus.passenger) == 25: print("Bussen är full")

asså du har räddat mig! koden skriver iaf inte nu in fler än 25:
import replit
from getkey import getkey, keys

class Bus:
passenger = []
antal_passenger = 0
def run(self):
print("Välkommen till bussimulatorn")
pass

def add_passenger():
replit.clear()
if len(Bus.passenger) == 25:
print("Bussen är full")
else:
age = input("Skriv in din ålder: ")
Bus.passenger.append(int(age))
input("Press Enter to continue...")

men får inte print satsen "bussen är full" och "välkommen till bussimulatorn" att fungera..
dem andra print satserna i funktionerna fungerar och jag försöker se vad som blir fel eller vad som skiljer dem åt men kan inte se det ? känner mig lite mindre stressad nu iaf när den stoppar vid 25..

Permalänk
Medlem

Utskriften för full buss borde fungera nu (för mig om jag ändrar 25 till 2). Men för "Välkommen" så behöver du tänka till lite extra. Vad händer om du gör fyra pil ned och avslutar programmet direkt. Får du inte Välkommen då? Det indikerar att "bus.run" (som skriver ut) är felplacerad. Det innebär i sin tur att "bus = Bus()" är felplacerad. Du bör flytta upp dessa två rader till ovanför "while".

Vad är kravet för inlämningsuppgiften? Att uppvisa ett fungerande scenario, eller måste det vara strikt objektorientering?
Objekt: Då skall du använda ett deriverat objekt bus/self överallt, samt kod publicerad 19:58 där klassen tillhandahåller funktionerna.
Procedur: Nu använder du "Bus" statiskt överallt enligt kod publicerad 02:45 där funktionerna är utanför klassdefinitionen.
I princip använder du bara det deriverade objektet "bus" för att skriva ut "Välkommen". Dina passagerarer lagras statiskt i klassen "Bus".
Hoppas det sista inte ställer till det för dig om det börjar bli dags för inlämning redan i veckan?