Schleifenproblem

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Dirki
User
Beiträge: 69
Registriert: Donnerstag 23. Juni 2016, 16:11

Unglaublich, wie viel Zeit 60 Zeilen Code in Anspruch nehmen, wenn man lernt und begreifen will, was man da tut.

Ich habe mal wieder eine unglaublich peinliche Frage. Glaubts oder nicht, aber ich teste da schon seit gestern daran rum. Und in meinem Lieblingsbuch finde ich auch die Antwort nicht.

Code: Alles auswählen

    while True:
        try:
            index = int(input("Bitte Servernummer eingeben: "))
        except ValueError:
            pass
        else:
            if 0 < int(index) <= len(servers):
                return servers[index - 1]
Ich würde gerne x abfangen um die Schleife um das programm mit exit() zu beenden, aber irgendwie finde ich da keinen Dreh, schon gar keinen eleganten. Kann mir da nochmal jemand weiterhelfen?
@ Sirius, deine Anregungen zu meinen Skript habe ich umgesetzt, genau wie die von BlackJack. Danke euch schon mal dafür!
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

@Dirki: ich glaube, Du denkst zu kompliziert.

Code: Alles auswählen

    while True:
        text = input("Bitte Servernummer eingeben: ")
        if text == "x":
            raise RuntimeError("User want's to exit.")
        try:
            return servers[int(text) - 1]
        except (ValueError, IndexError):
            pass
BlackJack

@Dirki: Du darfst in dem Fall die Eingabe nicht gleich in eine Zahl umwandeln, sondern musst die Zeichenkette an einen Namen binden, auf 'x' prüfen und machen was dann passieren soll, und falls nicht 'x' dann erst versuchen in eine Zahl zu wandeln.

Wobei ich Programmabbrüche bei solchen Programmen immer über Strg-C realisiere. Dann muss man sich nur auf oberster Ebene um den `KeyboardInterrupt` kümmern.
Benutzeravatar
Dirki
User
Beiträge: 69
Registriert: Donnerstag 23. Juni 2016, 16:11

Argh! Ja ich denke zu kompliziert.

Danke euch beiden, für die wie immer kontruktiven Antworten! :)

Edit:

Ich hoffe ich habe schon mal erwähnt das ihr die besten seid!
Antworten