Sida 1 av 1

Har lite problem med en try...exception funktion i Python

Postat: 09 nov 2008, 11:56
av ZerQ
Hejsan

Jag har skrivit ett litet program som skall hämta in två tal ifrån användaren och sedan skicka dom vidare till andra funktioner för bearbetning. Problemet att jag får inte till felhanteringen, lägger upp koden så får ni se hur den ser ut. Jag vill fånga upp om användaren bara trycker enter och om dom anger för små tal.

Om jag trycker enter så får jag inte min egen felhanterare att reagera, och om jag skriver ett för litet tal i första try funktionen så fungerar det klanderfritt, men om jag gör samma sak i andra input-satsen så skickas svaret direkt vidare utan att kontrollera om det är korrekt, så där kan jag skriva för små tal utan att try reagerar på det.

Behöver hjälp ???

Kod: Markera allt

def userInput():
    '''This function handles user input

    The function takes two values from the user
    and returning them to the calling function. We
    also tries if the inputs are correct and usable
    to the rest of the program.'''
    # Create local variables
    nA = None
    nL = None

    # Get the values from the user and check the inputs
    try:
        print '%s' % (TEXT['antal'], )
        nA = input('>>> ')
    except EOFError:
        print '%s' % (TEXT['generellt'], )
        na = input('>>> ')
    except if nA < 1:
        print '%s%' % (TEXT['felAntal'], )
        nA = input('>>> ')

    try:
        print '%s' % (TEXT['langd'], )
        nL = input('>>> ')
    except EOFError:
        print '%s' % (TEXT['generellt'], )
        nL = input('>>> ')
    except if nL < 3:
        print '%s' % (TEXT['felLangd'], )
        nL = input('>>> ')
        
    # Return these values to the calling function
    return nA, nL

Re: Har lite problem med en try...exception funktion i Python

Postat: 09 nov 2008, 12:42
av Lars
Normalt så ska man använda raw_input() istället för input() när man vill läsa in data från användare.

Syntaxen "except if nA < 1" finns inte. Except fångar sådant som skickas med raise, så om raw_input() kör "raise EOFError" så kan du fånga det felet med "except EOFError".

Re: Har lite problem med en try...exception funktion i Python

Postat: 09 nov 2008, 13:23
av ZerQ
Hmm, jag får inget att fungera som tänkt, har ändrat koden till att se ut som följande men det blir inte som jag hade tänkt mig ändå, . Kan någon visa med lite kod hur man skall skriva för att få önskade funktioner som jag skrev om i första inlägget.

Kod: Markera allt

try:
        print '%s' % (TEXT['antal'], )
        nA = int(raw_input('>>> '))
        if nA < 1:
            print '%s' % (TEXT['felAntal'], )
            nA = int(raw_input('>>> '))
            
    except ValueError:
        print '%s' % (TEXT['generellt'], )
        na = int(raw_input('>>> '))