Avoiding "invalid literal for int()" exception
John Machin
sjmachin at lexicon.net
Mon Dec 11 06:31:25 EST 2006
aine_canby at yahoo.com wrote:
> >>> v = raw_input("Enter: ")
> Enter: kjjkj
> >>> int(v)
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> ValueError: invalid literal for int() with base 10: 'kjjkj'
>
> In my program I need to be able to enter char strings or int strings on
> the command line. Then I use an if-elif structure to establish which is
> which. For example -
>
> if uniList[0].lower() in ("e","exit"): # uniList stores a unicode
> string origionally taken from stdin
> return
> elif uniList[0].lower() in ("h","help"):
> verb.PrintVerb()
> elif uniList[0].lower() in ("p","pass"):
> break
> elif int(uniList[0]) in range(0,10):
> verb.SetImportance(int(uniList[0]))
> break
> else:
> verb.AddNewVerb((uniList[0])
>
> How could I avoid the ValueError exception if uniList[0] == "Åker"? I
> was thinking of having something like -
>
> formatError = False
> try:
> iVal = int(uniList[0])
> if iVal not in range range(0,10):
> formatError = True
> catch ValueError:
Perhaps you meant
except ValueError:
:-)
> iVal = -1
>
Consider using uniList[0].isdigit() -- see
http://docs.python.org/lib/string-methods.html
HTH,
John
More information about the Python-list
mailing list