python logic
eth0
ethernet.zero at gmail.com
Fri Sep 1 09:40:13 EDT 2017
Era el Fri, 1 Sep 2017 06:30:43 -0700 (PDT) en comp.lang.python,
cuando de repente SS
dijo lo siguiente acerca de
python logic:
> Check out the following simple code:
>
> #!/bin/python
>
> print "1 - echo 1"
> print "2 - echo 2"
>
> answer = input("Enter your choice - ")
>
> if answer == 1:
> print "1"
> elif answer == 2:
> print "2"
> else:
> print "Invalid choice!"
>
>
> The else statement noted above works fine for numeric values other
> then 1 or 2. But if a user types in alphanumeric data (letters) into
> this, it blows up. Check out the following:
>
> [root at ansi ~]$ ./trash
> 1 - echo 1
> 2 - echo 2
> Enter your choice - 3
> Invalid choice!
>
> [root at ansi ~]$ ./trash
> 1 - echo 1
> 2 - echo 2
> Enter your choice - r
> Traceback (most recent call last):
> File "./trash", line 6, in <module>
> answer = input("Enter your choice - ")
> File "<string>", line 1, in <module>
> NameError: name 'r' is not defined
>
> I would expect the same behavior from both runs. Why does Python
> differ in the way it treats a character in that program? Finally,
> how to accomodate for such (how to fix)?
>
> TIA
In Python 2, the input() function evaluates whatever you enter in the
prompt. In your case, Python is trying to evaluate 'r' as if it was
a variable or something. Use the raw_input() function instead.
However, note that if you ever want to run your script with Python 3
you'll have to switch back to using input(), which does exactly the
same as Python 2's raw_input().
More information about the Python-list
mailing list