Zum Inhalt springen

Python: summare Tickets-Kosten für eine Konferenz berechnen


Empfohlene Beiträge

Hallo,

ich beginne folgende Aufgabe zu lösen, nun benötige ich Ihre Hilfe/korrekturen auf dem Weg zur entgültigen Klarheit.

 

Man muss ein Programm (auf Python) zu schreiben, welches das gesammte/summare Tickets-Kosten berechnet. Das Programm muss wie folgt arbeiten:

1. Zuerst soll der Benutzer befragt werden: wie viel (Anzahl) der Tickets will er für die Konferenz kaufen.

2. Weiter, für jedes Ticket wird es nach Alter des Besuchers befragt. Gemäß dem Alter des Besuchers werden Preiskathegorien gewählt:

- Falls besucher jünger als 18 Jahre alt ist - dann kommt er zur Konferenz kostenlos

- Falls Alter des Besuchers vom 18 bis 25 Jahre Alt: - dann der Preis pro Ticket 99 EU

-Falls Beucher älter als 25 J.A.: - dann beträgt der Preis: 139 EU

Im Resultat am Ende soll die gesammte Summe (für alle bestellte Tickets) herausgegeben werden. Falls es kommen mehr als 5 Personen zusammen - dann soll die Gruppe 20% Ermäßigung bekommen.

 

Unten ist mein Anfang, Roh- Variante. Ich sammle Tipps, Korrekturen und Ideen für die weitere Code-Entwicklung:

 

Nr_Tickets = int(input("please enter which number of tickets do you need: "))

first = Nr_Tickets[0]        # speichern vom ersten Ticket
count = 0                          # Zähler Setzen
result = ''                           # resultierende Zeile

for i in range Nr_Tickets                          # Idea: to go all Nr_Tickets through and to ask for age for each Ticket
    age(i) = int(input("please enter your age: "))
        i += 1
# Then needed to count Tickets in each age-cathegory.

# After it to add Prices in each AgeCathegory and in all Age-Cathegories.  How to realise it?
        
# if age < 18:
#    Preis_a18 = 0
#    print('entry free of cost')
# elif 18 <= age < 25:
#    Preis_18a25 = 99
#    print('your costs are 99 EU per Ticket')
# else:
#    Preis_a25 = 139
#    print('your costs are 139 EU per Ticket')

00111.txt

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

ich hätte ein paar Fragen, damit ich einschätzen kann, was für eine Hilfestellung man dir geben kann. Welche Vorkenntnisse hast du? In welchem Zusammenhang sollst du diese Aufgabe lösen?

Als kleiner Hinweis: Ich würde mir erst einmal abseits von irgendeiner Programmiersprache überlegen, wie der Ablauf von einer solchen Aufgabenstellung sein soll und darauf aufbauend überlegen, was für Variablen du benötigst und wann welche Kontrollstruktur zum Einsatz kommen sollte. Wenn man das für sich visualisiert hat und entsprechend programmiert, kann man sein Coding anschließend auch debuggen und prüfen, ob an den entsprechenden Stellen auch wirklich das passiert, was man möchte. Und wenn nicht, schaut man sich genauer an, ob man es falsch programmiert hat oder schon in der Planung ein Denkfehler war.

Ich kenne mich nicht mit Python aus, aber was mir direkt auffällt: Du lässt eine Zahl eingeben (int), behandelst diese aber dann wie eine Liste? Wofür brauchst du die Variablen first und count? Aus Sicht der Verständlichkeit: Du sollst je Ticket das Alter des Besuchers abfragen (der ja nicht automatisch derjenige ist, der die Tickets kauft),  aber hast als Abfrage "Enter your age"?

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 4 Minuten schrieb Rienne:

Ich kenne mich nicht mit Python aus, aber was mir direkt auffällt: Du lässt eine Zahl eingeben (int), behandelst diese aber dann wie eine Liste? Wofür brauchst du die Variablen first und count? Aus Sicht der Verständlichkeit: Du sollst je Ticket das Alter des Besuchers abfragen (der ja nicht automatisch derjenige ist, der die Tickets kauft),  aber hast als Abfrage "Enter your age"?

Ich bin jetzt auch kein Python-Experte aber ich wüsste nicht mal, was ich dazu schreiben sollte, da

  1. das Programm nicht mal fertig ist. Das meiste ist auskommentiert
  2. die Zeilen, die durchlaufen werden, voller Syntaxfehler sind

Ich nehme mal an, dass das Programm nicht mal gestartet wurde. Auf welcher Basis soll man denn nun Tipps geben?

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 32 Minuten schrieb Whiz-zarD:

Auf welcher Basis soll man denn nun Tipps geben?

Genau das! Darum auch die Frage, wie die Ausgangslage beim TO ist und meine allgemeinen Hinweise. Da wurde sich keine konzeptionell Gedanken über einen möglichen Algorithmus gemacht. Da hilft es dann auch nichts, wenn man auf Python-spezifische Syntax eingeht, wenn der grundlegende Ablauf nicht einmal klar ist. :)

@ankon erläutere doch bitte erst einmal, wie du dir gedacht hast, die Aufgabe zu lösen. Befindest du dich in einer Ausbildung oder einer Umschulung? Ist das eine Schulaufgabe? Willst du dir einfach so das Programmieren beibringen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Eine Sache lässt sich in jedem Fall sagen:

Es ist mit ziemlicher Sicherheit schlechter Stil, zwischen Sprachen hin- und herzuwechseln.
Deutsch, Englisch, Englisch, Deutsch.

Ansonsten kann ich meinen Vorrednern wenig hinzufügen.
Wirre Syntax, kein richtiger Ansatz erkennbar und zu allem Überfluss Namen, die PEP8 zum Weinen bringen. 

 

Bearbeitet von Visar
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 12 Stunden schrieb Rienne:

Hallo,

ich hätte ein paar Fragen, damit ich einschätzen kann, was für eine Hilfestellung man dir geben kann. Welche Vorkenntnisse hast du? In welchem Zusammenhang sollst du diese Aufgabe lösen?

Als kleiner Hinweis: Ich würde mir erst einmal abseits von irgendeiner Programmiersprache überlegen, wie der Ablauf von einer solchen Aufgabenstellung sein soll und darauf aufbauend überlegen, was für Variablen du benötigst und wann welche Kontrollstruktur zum Einsatz kommen sollte. Wenn man das für sich visualisiert hat und entsprechend programmiert, kann man sein Coding anschließend auch debuggen und prüfen, ob an den entsprechenden Stellen auch wirklich das passiert, was man möchte. Und wenn nicht, schaut man sich genauer an, ob man es falsch programmiert hat oder schon in der Planung ein Denkfehler war.

Ich kenne mich nicht mit Python aus, aber was mir direkt auffällt: Du lässt eine Zahl eingeben (int), behandelst diese aber dann wie eine Liste? Wofür brauchst du die Variablen first und count? Aus Sicht der Verständlichkeit: Du sollst je Ticket das Alter des Besuchers abfragen (der ja nicht automatisch derjenige ist, der die Tickets kauft),  aber hast als Abfrage "Enter your age"?

Danke für die ausführliche Antwort. Ich bin ganz Anfänger. Ich habe das Thema Datentypen durchgearbeitet. Jetzt arbeite ich das Thema Schleifen und Bedingungen und habe einige Programmbeispiele durchgeschaut. Jetzt bin ich dran, selbst erste Programme zu schreiben: Lerning by Doing

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 13 Stunden schrieb Whiz-zarD:

Ich bin jetzt auch kein Python-Experte aber ich wüsste nicht mal, was ich dazu schreiben sollte, da

  1. das Programm nicht mal fertig ist. Das meiste ist auskommentiert
  2. die Zeilen, die durchlaufen werden, voller Syntaxfehler sind

Ich nehme mal an, dass das Programm nicht mal gestartet wurde. Auf welcher Basis soll man denn nun Tipps geben?

 

 

Danke. Ja das Programm ist nicht fertig. Ich habe Teil_Eingabe geschrieben und Logik von Preis(vom Alter) und noch einige Stücke die aus das was ich durchgeschaut habe - nutzlich sein könnte. Und Syntaxfahler - klar gibt es: denn ich bin ganz frische Anfänger, welcher sowas noch nicht geschrieben hat.

Ich koche und erarbeite Gedanken, was ich in Richtung der Lösung mache.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 12 Stunden schrieb Rienne:

Genau das! Darum auch die Frage, wie die Ausgangslage beim TO ist und meine allgemeinen Hinweise. Da wurde sich keine konzeptionell Gedanken über einen möglichen Algorithmus gemacht. Da hilft es dann auch nichts, wenn man auf Python-spezifische Syntax eingeht, wenn der grundlegende Ablauf nicht einmal klar ist. :)

@ankon erläutere doch bitte erst einmal, wie du dir gedacht hast, die Aufgabe zu lösen. Befindest du dich in einer Ausbildung oder einer Umschulung? Ist das eine Schulaufgabe? Willst du dir einfach so das Programmieren beibringen?

ja, ich wollte gerade mich mit weiteren Ablauf weiter beschäftigen, jetzt ist mir nicht alles klar wie. Ich beginne, dann: Stück für Stück weiter. Fragen "wie" - gehört auch dazu, oder?   Ja, ich stelle mir jetzt nur Fragmente klar, die ich weiter entwickeln und korrigieren muss.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 4 Stunden schrieb Visar:

Eine Sache lässt sich in jedem Fall sagen:

Es ist mit ziemlicher Sicherheit schlechter Stil, zwischen Sprachen hin- und herzuwechseln.
Deutsch, Englisch, Englisch, Deutsch.

Ansonsten kann ich meinen Vorrednern wenig hinzufügen.
Wirre Syntax, kein richtiger Ansatz erkennbar und zu allem Überfluss Namen, die PEP8 zum Weinen bringen. 

 

Ja, ich habe einige Kommentare auf Deutsch übersetzt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 18 Stunden schrieb ankon:
first = Nr_Tickets[0]        # speichern vom ersten Ticket

nein, warum überhaupt?

vor 18 Stunden schrieb ankon:
age(i) = 

nein, das geht nicht. age(i) wäre ein funktionsaufruf kein array. man braucht auch kein array. man kann die summe direkt in der schleife nach der eingabe bilden.

vor 18 Stunden schrieb ankon:
i += 1

das ist zum einen falsch eingerückt und das musst du auch nicht selbst machen, die for schleife springt am ende selbst zum nächsten element.

vor 18 Stunden schrieb ankon:
for i in range Nr_Tickets

das müsste eigentlich range(Nr_Tickets) sein und es fehlt ein doppelpunkt

vor 18 Stunden schrieb ankon:
# elif 18 <= age < 25:

wenn du dort hin kommst, ist das alter nicht unter 18, den ersten teil kannst du also weglassen

vor 18 Stunden schrieb ankon:
#    Preis_a18 = 0
# elif 18 <= age < 25:
#    Preis_18a25 = 99
# else:
#    Preis_a25 = 139

 

damit legst du dir selbst steine in den weg, du hast jetzt 3 variablen in denen ein preis stehen könnte, die aber andernfalls nicht existieren. Das wird schwieriger als nötig damit eine summe zu bilden.

wie schon gesagt wurde, schreib mal auf was deiner meinung nach das programm machen muss um die aufgabe zu erfüllen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 5 Stunden schrieb _n4p_:

nein, warum überhaupt?

nein, das geht nicht. age(i) wäre ein funktionsaufruf kein array. man braucht auch kein array. man kann die summe direkt in der schleife nach der eingabe bilden.

das ist zum einen falsch eingerückt und das musst du auch nicht selbst machen, die for schleife springt am ende selbst zum nächsten element.

das müsste eigentlich range(Nr_Tickets) sein und es fehlt ein doppelpunkt

wenn du dort hin kommst, ist das alter nicht unter 18, den ersten teil kannst du also weglassen

damit legst du dir selbst steine in den weg, du hast jetzt 3 variablen in denen ein preis stehen könnte, die aber andernfalls nicht existieren. Das wird schwieriger als nötig damit eine summe zu bilden.

wie schon gesagt wurde, schreib mal auf was deiner meinung nach das programm machen muss um die aufgabe zu erfüllen.

Herzlichen Dank, besonders fürs Wegstreichen von     i += 1     und fürs :  bei der Beingung

price_common = 0
Nr_Tickets = int(input("please enter which number of tickets do you need: "))

for i in range (Nr_Tickets):                         
    age_for_ticket = int(input("For which age is a needed Ticket №{i}? : "))
    while True:
        if age_for_ticket < 18:
            print('entry free of cost')
            break
        elif 18 <= age_for_ticket < 25:
            print('your costs are 99 EU per Ticket')
            price_common += 99
            break
        elif 25 < age_for_ticket:
            price_common += 139
            print('your costs are 139 EU per Ticket')
            break
    continue

if Nr_Tickets > 5:
    price_common = price_common - (price_common * (20 / 100))
    print('zu zahlen ist die Summe mit Ermäßigung von 20% für Gruppen mit Personenzahl >5: ', price_common)
else:
    print('Summe zu Zahlen, in EU: ', price_common)  

Man kann hier prüfen ob bei der Eingabe von Personenzahl und vom Alter   Datentyp == int ?

Aber dazu käme ich schon morgen. Ginge das irgendwie einfach ohne   try-except   ?

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...