Python

Alexander Kaltwasser

Neues Mitglied
Hallo Leute ich muss in Python etwas für die Uni programmieren ich hab bloß ein Problem mit der While Schleife das Problem ist explizit beschrieben falls mir jemand helfen könnte wäre super
Vielen Dank
Hier folgt der Code:

Python:
import PySimpleGUI as sg
sg.theme('Default1')

preis = 0

hauptsaison = [6,7,8,9]
nebensaison = [1,2,3,4,5,10,11,12]

niedrigesternehotel = [1,2,3]
hohesternehotel = [4,5]

grundpreis_zweisternehotel = 100
grundpreis_dreisternehotel = 150
grundpreis_viersternehotel = 200
grundpreis_fünfsternehotel = 250

aufschlag_flugzeug = 300
aufschlag_zug = 150
aufschlag_bus = 75

rabatt_nebensaison = 0.8

personenanzahl_groß = [2,3,4,5,6]

# Inzidenz Problem! Programm soll prüfen ob Reiseland ein Risikogebiet ist, dass ist der Fall, wenn die Inzidenz aus Zeile 30-33
# über 100 ist,falls dass der Fall ist soll im GUI hinter dem dem Reiseland (können auch mehrere sein, abhängig von der Inzidenz)
# folgende Anzeige erscheinen (Land (Achtung Risikogebiet!))
# Problem ist: wir brächten für alle Möglichkeiten z.B. Italien (Risiko), Schweden (Risiko), Spanien, England oder
# Spanien (Risiko), Schweden (Risiko), England, Italien, sehr viele If-Schleifen quasi 256 Stück. Kann man das leichter machen?
inzidenz_sp = 90
inzidenz_i = 100
inzidenz_e = 100
inzidenz_sw = 100

Spanien = "Spanien"

Italien = "Italien"

Risikogebiet = []

reiseländer =[]

if inzidenz_sp <= 100:
    Spanien in Risikogebiet
else:
    Spanien in reiseländer



if "Italien" in Risikogebiet:
    reiseländer = ["Italien (Achtung Risikogebiet)", "Spanien", "England", "Schweden"]
else:
    reiseländer = ["Italien", "Spanien", "England", "Schweden"]



layout1 = [ [sg.Text('Bitte geben Sie Ihren Reisedaten an.')],
           [sg.Text('Reisemonat als Zahl:', size=(15, 1)), sg.InputText(key = "reisemonat")],
           [sg.Text('Anzahl der Nächte:', size=(15, 1)), sg.InputText(key = "anzahl_naechte")],
           [sg.Text('In welches Land möchten Sie reisen?:', size=(15, 5)), sg.Combo(reiseländer, key = "region")],
           [sg.Text('Mit wie vielen Personen wollen Sie anreisen?:', size=(15, 1)), sg.InputText(key = "personenzahl")],
           [sg.Button('Bestätigen'), sg.Button('Abbrechen')] ]

window1 = sg.Window('Hotelbuchung', layout1, size=(500, 300))

event, values = window1.read()

window1.close()

reisemonat_zahl = int(values["reisemonat"])
anzahl_naechte = int(values["anzahl_naechte"])
region = values["region"]
personenzahl = int(values["personenzahl"])


layout2 = [ [sg.Text('Bitte geben Sie Ihren persönliche Daten ein.')],
           [sg.Text('Name:', size=(15, 1)), sg.InputText(key = "Name")],
           [sg.Text('Geburtsdatum:', size=(15, 1)), sg.InputText(key = "Geburtsdatum")],
           [sg.Text("Geschlecht:", size=(15, 1)), sg.InputText(key = "Geschlecht")],
           [sg.Button('Bestätigen'), sg.Button('Abbrechen')] ]

window2 = sg.Window("Persönliche Daten", layout2)




# Hier Problem 2: Daten aus While Schleife werden überschrieben, wie speichern wir diese bei jedem Durchlauf einzelnd in einer
# externen Liste ab? Problem: Daten werden bei jedem While Durchlauf überschrieben. Außerdem funktioniert das Fenster für
# für mehrere Eingaben von Personendate nicht und wir können nicht bestätigen.
i = 0
personenzahl = i

if personenzahl == 1:
    event, values = window2.read()
elif personenzahl in personenanzahl_groß:
    while i < personenzahl:
        event, values = window2.read()
    if event == "Bestätigen":
      
        window2.close()
        i = i+1

while True:
    window2.read()
    event, values = window2.read()
    if event == sg.WIN_CLOSED or event == 'Abbrechen':
        break

window2.close()

name = values["Name"]
geburtsdatum = values["Geburtsdatum"]
geschlecht = values["Geschlecht"]


#Impfstatus
impfstatus = ["Ja","Nein"]

layout3 = [ [sg.Text("Impfstatus:")],
           [sg.Text("Sind Sie geimpft", size=(15, 1)), sg.Combo(impfstatus, key = "impfstatus")],
           [sg.Button("Bestätigen"), sg.Button("Abbrechen")] ]

window3 = sg.Window("Impfstatus", layout3)

event, values = window3.read()
window3.close()

impfstatus_angabe = values["impfstatus"]

#Hotelbewertung
sterneanzahl = [2,3,4,5]

layout4 = [ [sg.Text("Hotelbewertung:")],
           [sg.Text("Wie viele Sterne soll Ihr Hotel haben", size=(15, 1)), sg.Combo(sterneanzahl, key = "sterneanzahl")],
           [sg.Button("Bestätigen"), sg.Button("Abbrechen")] ]

window4 = sg.Window("Hotelbewertung", layout4)

event, values = window4.read()
window4.close()

sterneanzahl_angabe = int(values["sterneanzahl"])

#Preisberechnung
if sterneanzahl_angabe == 2:
    preis = preis + grundpreis_zweisternehotel * personenzahl * anzahl_naechte
elif sterneanzahl_angabe == 3:
    preis = preis + grundpreis_dreisternehotel * personenzahl * anzahl_naechte
elif sterneanzahl_angabe == 4:
    preis = preis + grundpreis_viersternehotel * personenzahl * anzahl_naechte
elif sterneanzahl_angabe == 5:
    preis = preis + grundpreis_fünfsternehotel * personenzahl * anzahl_naechte



#Anreise
anreiseart = ["Zug","Flugzeug", "Bus", "Selbstanreise"]

layout5 = [ [sg.Text("Anreise:")],
           [sg.Text("Wie möchten Sie anreisen?", size=(15, 1)), sg.Combo(anreiseart, key = "anreiseart")],
           [sg.Button("Bestätigen"), sg.Button("Abbrechen")] ]

window5 = sg.Window("Anreiseart", layout5)

event, values = window5.read()
window5.close()

anreiseart_angabe = values["anreiseart"]

#Preisberechnung
if anreiseart_angabe == "Zug":
    preis = preis + aufschlag_zug
elif anreiseart_angabe ==  "Flugzeug":
    preis = preis + aufschlag_flugzeug
elif anreiseart_angabe == "Bus":
    preis = preis + aufschlag_bus
elif anreiseart_angabe == "Selbstanreise":
    preis = preis

print(preis)
 
Zuletzt bearbeitet von einem Moderator:

M.L.

Top Contributor
viele If-Schleifen quasi 256 Stück
Neben den Code-Tags sind auch die Einrückungen für Python von Interesse (neben Angabe der verw. Python-Version). Das zitierte Problem könnte man mit wie folgt bearbeiten: https://www.geeksforgeeks.org/check-multiple-conditions-in-if-statement-python/ Und beim letzten Codeteil *könnte* https://entwickler.de/online/python/switch-case-statement-python-tutorial-579894245.html von Interesse sein.
 
K

kneitzel

Gast
sehr viele If-Schleifen
Als erstes ist if keine Schleife.

So die vielen if Anweisungen alles etwas prüfen wie dein Code mit den Bewertungen, dann ist es möglich, viele if Anweisungen durch eine Schleife zu ersetzen.
(Oder ggf sogar nur eine einzige Zeile wenn man

if sterneazahl_angabe == 2:
preis = preis + grundpreis_zweisternehotel * personenzahl * anzahl_naechte
elif sterneanzahl_angabe == 3:
preis = preis + grundpreis_dreisternehotel * personenzahl * anzahl_naechte
Wenn du hier die Grundpreise in einem Array speicherst (oder eine ähnliche Struktur, so dass über den Index zugegriffen werden kann, dann wird das alles eine Codezeile.

Daher: immer über sinnvolle Datenstrukturen nachdenken!

Edit: Hinzugefügt das statt einer Schleife auch teilweise sogar eine Zeile reichen kann ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B 2 Wege Kommunikation zwischen Python/selenium Code und von Diesem in Seite eingefügten Javascript Code? Andere Programmiersprachen 8
V Adding many Python files and directories to a single dmg file Andere Programmiersprachen 2
H When deployed to Heroku, python setup.py egg info did not run successfully. Andere Programmiersprachen 0
M Objektorientierte Programmierung in Python Andere Programmiersprachen 3
D Python - Vererbung Andere Programmiersprachen 2
D Tensorflow, Python - Code verstehen Andere Programmiersprachen 2
D Python - Tensorflow installieren - Datei in Spyder öffnen Andere Programmiersprachen 6
Kirby.exe Relative Imports in Python Andere Programmiersprachen 10
D Python (Machine Learning) - linspace Andere Programmiersprachen 7
B Python: Wie entferne ich Daten aus einer Datei und plotte sie? Andere Programmiersprachen 2
G python – getting bad request on tests using django rest framework Andere Programmiersprachen 1
Kirby.exe Python - JSON Sortieren Andere Programmiersprachen 5
Kirby.exe Python – Valid Characters in JSON Andere Programmiersprachen 6
L Fehlermeldung beim lesen aus einer Datei mit Python Andere Programmiersprachen 4
D Decorators with parameters in Python Andere Programmiersprachen 2
J Multidimensionales Array in Python Andere Programmiersprachen 11
Kirby.exe Python Anfänger schafft es nicht User Input einzulesen Andere Programmiersprachen 7
D Python - ModuleNotFoundError: Andere Programmiersprachen 6
G (Python) Werte einer ausgelesenen csv Datei verwalten Andere Programmiersprachen 2
D Python - pytz installieren Andere Programmiersprachen 5
M Python Objekte Andere Programmiersprachen 2
E Werte von Python an Java senden Andere Programmiersprachen 13
AssELAss Python Variable hochzählen? Andere Programmiersprachen 5

Ähnliche Java Themen

Neue Themen


Oben