Seite 1 von 1

Schleifenproblem

Verfasst: Donnerstag 7. Juli 2016, 15:19
von Dirki
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!

Re: Schleifenproblem

Verfasst: Donnerstag 7. Juli 2016, 15:36
von Sirius3
@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

Re: Schleifenproblem

Verfasst: Donnerstag 7. Juli 2016, 15:39
von 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.

Re: Schleifenproblem

Verfasst: Donnerstag 7. Juli 2016, 15:43
von Dirki
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!