[Tutor] commandline unable to read numbers?
Peter Otten
__peter__ at web.de
Sun Aug 7 13:28:26 CEST 2011
Robert Sjoblom wrote:
> I have a quite odd problem, and I've come across it before but
> probably ignored it at the time because I had other concerns. I've
> tried googling for the answer but haven't really come closer to
> solving it.
> This is what happens:
> C:\[path]\nester>C:\Python32\python.ex
> e setup.py register
> running register
> running check
> We need to know who you are, so please choose either:
> 1. use your existing login,
> 2. register as a new user,
> 3. have the server generate a new password for you (and email it to you),
> or 4. quit
> Your selection [default 1]:
> 1
> Please choose one of the four options!
> We need to know who you are, so please choose either:
> 1. use your existing login,
> 2. register as a new user,
> 3. have the server generate a new password for you (and email it to you),
> or 4. quit
> Your selection [default 1]:
>
> No matter what I enter it will loop back. It seems my commandline
> can't read numbers? The other time I noticed it was while working on a
> notebook example:
>
> class Menu:
> """Display a menu and respond to choices when run."""
> def __init__(self):
> self.notebook = Notebook()
> self.choices = {
> "1": self.show_notes,
> "2": self.search_notes,
> "3": self.add_note,
> "4": self.modify_note,
> "5": self.quit
> }
>
> def display_menu(self):
> print("""
> Notebook Menu
>
> 1. Show All Notes
> 2. Search Notes
> 3. Add Note
> 4. Modify Note
> 5. Quit
> """)
>
> def run(self):
> """Display the menu and respond to choices."""
> while True:
> self.display_menu()
> choice = input("Enter an option: ")
> action = self.choices.get(choice)
> if action:
> action()
> else:
> print("{0} is not a valid choice.".format(choice))
>
> This code works in IDLE, so I know it's nothing in the actual code
> that's a problem, but when I run it in commandline it will just repeat
> "is not a valid choice." Note that it does this no matter what I
> actually enter, it won't actually get any kind of input except the
> enter key. So I suppose it's a problem with input() (I'm using python
> 3.2 btw). Anyone have any insights?
I think you are on the right track: Python 3.2's input() has a nasty bug on
Windows (http://bugs.python.org/issue11272). If you repeat the following in
your interactive interpreter (invoked from the commmandline)
>>> input()
123
'123'
and see '123\r' instead of just '123' you are affected. I believe the bug is
fixed in 3.2.1, so the easiest solution to your problem would be to switch
to that version.
More information about the Tutor
mailing list