[Tutor] ValueError
Johnson Tran
aznjonn at me.com
Tue May 3 14:12:00 CEST 2011
I am using python 2.5...and adding raw_input has fixed the issue, thank you!
On May 3, 2011, at 5:01 AM, Peter Otten wrote:
> Johnson Tran wrote:
>
>> Thanks for the replies..so I added the "try" block but it still does not
>> seem to be outputting my default error message:
>>
>> def Conversion():
>> try:
>>
>> print "This program converts the first value from inches to
>> centimeters and second value centimeters to inches." print "(1
>> inch = 2.54 centimeters)" inches = input("Enter length in inches:
>> ") centimeters = 2.54 * float(inches)
>> print "That is", centimeters, "centimeters."
>> centimeters = input("Enter length in centimeters: ")
>> inch = float(centimeters) / 2.54
>> print "That is", inch, "inches."
>>
>> except ValueError:
>> print "Invalid digit, please try again."
>> Conversion()
>>
>> Error message:
>>
>> Traceback (most recent call last):
>> File "/Users/JT/Desktop/hw#2.py", line 16, in <module>
>> Conversion()
>> File "/Users/JT/Desktop/hw#2.py", line 9, in Conversion
>> centimeters = input("Enter length in centimeters: ")
>> File "<string>", line 1, in <module>
>> NameError: name 'fs' is not defined
>
> input() in Python 2.x tries to evaluate your input as a Python expression,
> so if you enter "2*2" it gives you 4, and when you enter "fs" it tries to
> look up the value of a global variable "fs" in your python script. You don't
> have such a variable in your script, so it complains with a NameError.
>
> The best way to avoid such puzzling behaviour is to use raw_input() instead
> of input().
>
> Also you should make the try...except as narrow as possible
>
> try:
> centimeters = float(centimeters)
> except ValueError as e:
> print e
>
> is likely to catch the float conversion while with many statements in the
> try-suite you are more likely to hide a problem that is unrelated to that
> conversion.
>
> PS: In Python 3.x raw_input() is gone, but input() behaves like raw_input()
> in 2.x
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
More information about the Tutor
mailing list