Seite 1 von 1

Text Menü

Verfasst: Freitag 6. Juli 2018, 15:53
von Itech
Hallo zusammen,

bin noch totaler Anfänger und erstelle gerade ein Text Menü. Das Script soll am Ende Bits in Bytes umrechnen und Bytes in KiloBytes etc. Habe schon viel Zeit auf Google verbracht, konnte bis jetzt aber nicht rausfinden warum das Script nicht richtig funktioniert. Alle Punkte sind noch nicht fertig, aber aus meiner Sicht sollte es eigentlich funktionieren. Er geht richtig in den Menüpunkt 1 und fordert einen auf die Anzahl der Bits einzugeben. Danach springt er aber wieder sofort in das Menü. Mein Gedanke war das er jegliche Eingabe als falsch deklariert und er somit in den Loop geht. Ihr kennt euch bestimmt besser aus. :)

Code: Alles auswählen

# Menü
def print_menu():       
    print ("MENU:")
    print ("1. Eingabe in Bit 1")
    print ("2. Eingabe in Byte 2")
    print ("3. Eingabe in Kilobyte 3")
    print ("4. Eingabe in Megabyte 4")
    print ("5. Eingabe in Gigabyte 5")
    print ("6. Eingabe in Terabyte 6")
    print ("0. Programm schließen")
   

#def
def Byr():

    fehler = True
    while fehler == True:
        try:
            eingabe = input("Bitte Bits eingeben: ")
            x = eval(eingabe)
            fehler = False
        
        except:

            print ("Falsche Eingabe! Bitte nur ganze Zahlen eingeben")
        
            byte = x / 8
            print (x, "Bits entsprechen" , byte , "Bytes")


loop=True      
  
while loop:          
    print_menu()    
    choice = input("Wählen Sie einen Menüpunkt: ")
     
    if choice=='1':     
        Byr()
        
    elif choice=='2':
        print ("Bitte Anzahl Byte eingeben:")

    elif choice=='3':
        print ("Bitte Anzahl KiloByte eingeben:")
        
    elif choice=='4':
        print ("Bitte Anzahl MegaByte eingeben:")

    elif choice=='5':
        print ("Bitte Anzahl GigaByte eingeben:")

    elif choice=='6':
        print ("Bitte Anzahl TeraByte eingeben:")
        
    elif choice=='0':
        print ("Das Programm wurde beendet!")
        loop=False
        
    else:
        
        print ("Es sind nur ganze Zahlen von 0 bis 6 möglich")

Re: Text Menü

Verfasst: Freitag 6. Juli 2018, 17:28
von __blackjack__
@Itech: Was hattest Du denn erwartet was nach Eingabe der Bits passiert? Und wann denkst Du wird der Code in einem ``except``-Block ausgeführt?

Apropos ``except``: Nie ein nacktes ``except`` verwenden ohne Angabe der konkreten Ausnahme(n) die Du behandeln willst. Sonst behandelst Du *alle* Ausnahmen, auch solche mit denen Du gar nicht rechnest, zum Beispiel auch solche die durch Programmierfehler entstehen, die Du dann nur sehr schwer finden kannst.

Was ebenfalls ganz dringend weg muss ist das `eval()`. Du willst eine Zeichenkette in eine Zahl wandeln, speziell dafür gibt es `int()`.

Re: Text Menü

Verfasst: Samstag 14. Juli 2018, 11:20
von Itech
@__blackjack__: Dank Dir das hat mir schon geholfen. Was müsste ich dem except denn genau hinzufügen, damit es klar zuordbar ist?

except(?)

Re: Text Menü

Verfasst: Samstag 14. Juli 2018, 12:32
von __blackjack__
@Itech: Welche Ausnahmen möchtest Du denn da behandeln?

Re: Text Menü

Verfasst: Samstag 14. Juli 2018, 16:53
von ThomasL