Behöver hjälp med skoluppgift programmering 1 python, har ingen att fråga...

Permalänk
Medlem

Behöver hjälp med skoluppgift programmering 1 python, har ingen att fråga...

Jag ska skapa en buss med en meny! Användaren ska kunna göra val i menyn för att kunna lägga till passagerare, skriva in deras ålder. Kunna anropa när bussen är full (max 25 platser). Ska kunna skriva ut alla värden på passagerarna och även beräkande den totala åldern. Åldern ska vara en vektor. Detta ska sedan lagras. Jag vet verkligen inte hur jag ska ta mig vidare från min kodning. Det enda jag har gjort är att skapa en meny. Hur kan jag sedan def alla olika alternativ? Hur ser kodningen ut. Uppskattar all hjälp jag kan få! Tack

""Hjälpkod för att komma igång
* Notera att båda klasserna är i samma fil för att det ska underlätta.
* Om programmet blir större bör man ha klasserna i separata filer såsom jag går genom i filmen
* Då kan det vara läge att ställa in startvärden som jag gjort.
* Man kan också skriva ut saker i konsollen i konstruktorn för att se att den "vaknar"
* Denna kod hjälper mest om du siktar mot betyget E och C
* För högre betyg krävs mer självständigt arbete
"""

class Buss:
passagerare = []
antal_passagerare = 0

def run(self):
print("Välkommen till Buss-simulatorn")
# Här ska menyn ligga för att göra saker
# Vi rekommenderar switch och case här
# Dessutom visar jag hur man anropar metoderna nedan via menyn
# Börja nu med att köra koden för att se att det fungerar innan ni sätter igång med menyn.
# Bygg sedan steg-för-steg och testkör koden.

def add_passanger(self):
# ordet pass måste finnas i "tomma" funktioner för att de ska kunna kompileras i Python, när du har
# något som inte är en kommentar i funktion, tex print("test") skall "pass" tas bort
pass

# Lägg till passagerare. Här skriver man då in ålder men eventuell annan information.
# Om bussen är full kan inte någon passagerare stiga på

def print_buss(self):
# Skriv ut alla värden ur vektorn. Alltså - skriv ut alla passagerare
pass

def calc_total_age(self):
# Beräkna den totala åldern.
# För att koden ska fungera att köra så måste denna metod justeras, alternativt att man temporärt sätter metoden med

*** MIN KODNING ****

passagerare = [25]
antal_passagerare = 0
age = 0

print("Välkommen ombord på bussen!")
def menu():
print("**********************")
print("[1]. Lägg till passagerare")
print("[2]. Se passagerarlista")
print("[3]. Totala åldern")
print("[4]. Avsluta programmet")
print("**********************")

def option1():
antal_passagerare = 0

menu()
print()
option = int(input("Välj ett alternativ i menyn: "))

while option != 4:
try:
if option == 1:
print("Lägg till passagerare")

elif option == 2:
print("Se passagerarlistan")
elif option == 3:
print("Totala åldern på bussen")
else:
print("Felaktig information, försök igen")

print()
menu()
print()
option = int(input("Välj ett alternativ i menyn: "))
except:
print("Felaktig inmatning, försök igen")

print("Tack för att du använde detta program! Programmet avslutas.")

Permalänk
Vila i frid

Förslagsvis läser du igenom några exempel på nätet och försöker förstå principerna.

T.ex. https://www.listendata.com/2019/08/python-object-oriented-pro...

Permalänk
Medlem

Jag tycker du ska läsa igenom vad din lärare skrivit en gång till. Kommentarerna i koden säger mycket om hur du ska göra.
Eftersom du har gjort en meny tänker jag inte hjälpa dig med den biten.

(Nu skriver jag väldigt sällan i Python så kanske tänker lite fel)
Bussen är en klass och vi vill komma åt den lätt. Detta kan vi göra genom att till exempel skriva

b = Buss()

Vi kan därefter lägga till passagerare genom att skriva:

b.passagerare.append(*)

Där stjärnan ersätts med ålder på passageraren. Du kan sen höja antalet passagerare med:

b.antal_passagerare += 1

För att skriva ut alla åldrar i bussen skriver du

for x in range(len(b.passagerare)): print b.passagerare[x],

Finns ett lättare sätt att skriva på men tror att det är bättre att förstå det där om du vill lära dig programmera på riktigt. Iaf den totala åldern kan du få genom att skriva exempelvis:

totalAge = 0 for x in range(len(b.passagerare)): totalAge += b.passagerare[x], print(totalAge)

Då får variabeln värdet av den totala åldern och skrivs sedan ut.
Mycket mer än så vill jag inte hjälpa dig för du ska lära dig själv också! Och programmering är likt matte iom att man måste kämpa med det för att lära sig.

Edit: 'b' är inget bra variabelnamn. Det duger för Programmering 1 dock så länge du inte satsar på A.

Lite gramatikfel
Visa signatur

Citera för svar!

Permalänk
Medlem
Skrivet av simon253:

Jag tycker du ska läsa igenom vad din lärare skrivit en gång till. Kommentarerna i koden säger mycket om hur du ska göra.
Eftersom du har gjort en meny tänker jag inte hjälpa dig med den biten.

(Nu skriver jag väldigt sällan i Python så kanske tänker lite fel)
Bussen är en klass och vi vill komma åt den lätt. Detta kan vi göra genom att till exempel skriva

b = Buss()

Vi kan därefter lägga till passagerare genom att skriva:

b.passagerare.append(*)

Där stjärnan ersätts med ålder på passageraren. Du kan sen höja antalet passagerare med:

b.antal_passagerare += 1

För att skriva ut alla åldrar i bussen skriver du

for x in range(len(b.passagerare)): print b.passagerare[x],

Finns ett lättare sett att skriva på men tror att det är bättre att förstå det där om du vill lära dig programmera på riktigt. Iaf den totala åldern kan du få genom att skriva exempelvis:

totalAge = 0 for x in range(len(b.passagerare)): totalAge += b.passagerare[x], print(totalAge)

Då får variabeln värdet av den totala åldern och skrivs sedan ut.
Mycket mer än så vill jag inte hjälpa dig för du ska lära dig själv också! Och programmering är likt matte iom att man måste kämpa med det för att lära sig.

Edit: 'b' är inget bra variabelnamn. Det duger för Programmering 1 dock så länge du inte satsar på A.

Tack så jättemycket! Detta var de jag behövde för att starta igång! Jag stirrade mig blint i en vecka och förstod in hur jag skulle ta mig vidare! Räddare i nöden!

Permalänk
Medlem

Få det att fungera och spara undan sedan bör du nog få klassen buss korrekt.

T.ex brukar interna variabler som antal_passagerare inte anropas utifrån, i din meny räcker add_passenger som då är en funktion i buss som både lägger till åler och ökar sntal passagerare med 1.

De två kodsnuttar du fick ovan med for... är också två metoder till klassen, tex anropet b.print_buss() implementerar du internt med self.antal_passagerare

Steg tre blir att add_passenger kollar om det redan finns 25 passagerare och då inte gör något men returnerar true/false så att menyn kan skriva ut om bussen var full.

Men som sagt få något som funkar och fundera på struktur, objekt och klasser sedan

Permalänk
Medlem

Kul att läraren vill att man ska använda switch och case när det inte ens finns i Python.

I nyare versioner av Python finns dock match

choice = int(input("> ")) match choice: case 1: add_passanger() case 2: print_buss() case 3: calc_total_age()

Lycka till.

Visa signatur

i7 4790k | Asus Z97M-Plus | 16gb ram | Asus Strix 970 | Phanteks PH-TC12DX | Samsung 850 Evo 250gb | Corsair Force GS 120gb | Fractal Design Integra M 650w | Fractal Design Define Mini C

Permalänk
Medlem
Skrivet av simon253:

Jag tycker du ska läsa igenom vad din lärare skrivit en gång till. Kommentarerna i koden säger mycket om hur du ska göra.
Eftersom du har gjort en meny tänker jag inte hjälpa dig med den biten.

(Nu skriver jag väldigt sällan i Python så kanske tänker lite fel)
Bussen är en klass och vi vill komma åt den lätt. Detta kan vi göra genom att till exempel skriva

b = Buss()

Vi kan därefter lägga till passagerare genom att skriva:

b.passagerare.append(*)

Där stjärnan ersätts med ålder på passageraren. Du kan sen höja antalet passagerare med:

b.antal_passagerare += 1

För att skriva ut alla åldrar i bussen skriver du

for x in range(len(b.passagerare)): print b.passagerare[x],

Finns ett lättare sätt att skriva på men tror att det är bättre att förstå det där om du vill lära dig programmera på riktigt. Iaf den totala åldern kan du få genom att skriva exempelvis:

totalAge = 0 for x in range(len(b.passagerare)): totalAge += b.passagerare[x], print(totalAge)

Då får variabeln värdet av den totala åldern och skrivs sedan ut.
Mycket mer än så vill jag inte hjälpa dig för du ska lära dig själv också! Och programmering är likt matte iom att man måste kämpa med det för att lära sig.

Edit: 'b' är inget bra variabelnamn. Det duger för Programmering 1 dock så länge du inte satsar på A.

Vad betyder "*" i b.passagerare.append(*)?

Permalänk
Medlem
Skrivet av aa11:

Vad betyder "*" i b.passagerare.append(*)?

Skrivet av simon253:

b.passagerare.append(*)

Där stjärnan ersätts med ålder på passageraren. Du kan sen höja antalet passagerare med:

Se ovan.

Visa signatur

:(){ :|:& };:

🏊🏻‍♂️   🚴🏻‍♂️   🏃🏻‍♂️   ☕

Permalänk
Medlem
Skrivet av GLaDER:

Men det fungerar inte när jag skriver med * eller de måste vara något annat i koden?

Permalänk
Vila i frid
Skrivet av aa11:

Men det fungerar inte när jag skriver med * eller de måste vara något annat i koden?

Där står, citat: "Där stjärnan ersätts med ålder på passageraren."

Permalänk
Medlem
Skrivet av hasenfrasen:

Där står, citat: "Där stjärnan ersätts med ålder på passageraren."

På vilket sätt?
Kan du snälla förse mig med ett exempel?

Permalänk
Medlem
Skrivet av GLaDER:
Skrivet av aa11:

På vilket sätt?
Kan du snälla förse mig med ett exempel?

b.passagerare.append(3)

Visa signatur

:(){ :|:& };:

🏊🏻‍♂️   🚴🏻‍♂️   🏃🏻‍♂️   ☕

Permalänk
Medlem
Skrivet av GLaDER:

b.passagerare.append(3)

Tack för ditt svar.
I fallet av detta uppdraget med bussen hur jag kan veta hur många passenger skulle tilläggas? Varför 3 inte 2?

Permalänk
Vila i frid
Skrivet av aa11:

Varför 3 inte 2?

Vad du lägger till för siffra/värde är upp till dig att bestämma.

Permalänk
Medlem

Vet inte om det är överkurs med dict, men lite lättare att lägga till de olika värdena. Även värt att komma ihåg att skriva alla variabler på engelska.

class Bus: print("Välkommen till Buss-simulatorn") passengers = dict() quantity = 0 def menu(self): # Här ska menyn ligga för att göra saker # Vi rekommenderar switch och case här # Dessutom visar jag hur man anropar metoderna nedan via menyn # Börja nu med att köra koden för att se att det fungerar innan ni sätter igång med menyn. # Bygg sedan steg-för-steg och testkör koden. while True: print("**********************") print("[1]. Lägg till passagerare") print("[2]. Se passagerarlista") print("[3]. Totala åldern") print("[4]. Antal passagerare") print("[5]. Avsluta programmet") print("**********************") try: option = int(input("Välj ett alternativ i menyn: ")) if option == 1: b.add_passenger() elif option == 2: print(b.print_bus()) elif option == 3: print(b.calc_total_age()) elif option == 4: print(b.bus_quantity()) else: print("Programmet avslutas") break except: print("Felaktig inmatning") self.menu() def add_passenger(self): # ordet pass måste finnas i "tomma" funktioner för att de ska kunna kompileras i Python, när du har # något som inte är en kommentar i funktion, tex print("test") skall "pass" tas bort try: name = str(input("Ange namn för passagerare: ")) age = int(input("Ange ålder för passagerare: ")) # Lägg till passagerare. Här skriver man då in ålder men eventuell annan information. # Om bussen är full kan inte någon passagerare stiga på if b.quantity <= 25: b.passengers.update({name: {'name':name, 'age':age}}) b.quantity += 1 else: print("Bussen är full") except: print("Felaktig inmatning") self.add_passenger() def print_bus(self): # Skriv ut alla värden ur vektorn. Alltså - skriv ut alla passagerare name_list = [] for k,v in b.passengers.items(): name_list.append(v['name']) return ("Passagerare i bussen: {}".format(name_list)) def calc_total_age(self): # Beräkna den totala åldern. # För att koden ska fungera att köra så måste denna metod justeras, alternativt att man temporärt sätter metoden med age_list = [] for k,v in b.passengers.items(): age_list.append(int(v['age'])) return ("Totala åldern för passagerare: {} år".format(sum(age_list))) def bus_quantity(self): return ("Antal passagerare på bussen: {} st".format(b.quantity)) b = Bus() b.menu()

Visa signatur

AMD 7800X3D | ASUS TUF X670E-PLUS | Corsair Vengeance DDR5 32GB EXPO | ASUS TUF 4090 OC 24GB |
Noctua NH-U12A | Corsair 4000D | Corsair AX1200W | Steelseries Apex 7 | Steelseries Sensei Ten | ASUS VG35VQ

https://github.com/Mariusz89B