[Tutor] how to accept an integer?

Kent Johnson kent37 at tds.net
Wed Dec 5 22:24:48 CET 2007


Mahesh N wrote:
> I dun understand the mistake. My aim is to accept an integer number. The 
> python lookup in IDLE asks for a string object but the interpreter 
> returns with the following error message. Some one pls explain.
> Thank You
> 
> PS : I understand that i can do type conversion after getting input thru 
> raw_input(). But how does input() function work?
> 
>  >>> prompt="temme a number\n"
>  >>> speed =input(prompt)
> 
> Traceback (most recent call last):
>   File "<pyshell#56>", line 1, in <module>
>     speed =input(prompt)
> TypeError: 'str' object is not callable
>  >>> speed =input("temme a number\n")

It looks like you have named a string 'input'; this hides the built-in 
'input' function and causes the error you are seeing. Restart IDLE and 
input() should work correctly.

A safer way to accept an integer is to use raw_input() and convert the 
result yourself:

try:
   speed = int(raw_input(prompt))
except ValueError:
   print 'You did not enter an integer'

Kent


More information about the Tutor mailing list