python - How can I read inputs as integers? -
why code not input integers? on web says use raw_input()
, read on stack overflow (on thread did not deal integer input) raw_input()
renamed input()
in python 3.x.
play = true while play: x = input("enter number: ") y = input("enter number: ") print(x + y) print(x - y) print(x * y) print(x / y) print(x % y) if input("play again? ") == "no": play = false
python 2.x
there 2 functions user input, called input
, raw_input
. difference between them is, raw_input
doesn't evaluate data , returns is, in string form. but, input
evaluate whatever entered , result of evaluation returned. example,
>>> import sys >>> sys.version '2.7.6 (default, mar 22 2014, 22:59:56) \n[gcc 4.8.2]' >>> data = input("enter number: ") enter number: 5 + 17 >>> data, type(data) (22, <type 'int'>)
the data 5 + 17
evaluated , result 22
. when evaluates expression 5 + 17
, detects adding 2 numbers , result of same int
type. so, type conversion done free , 22
returned result of input
, stored in data
variable. can think of input
raw_input
composed eval
call.
>>> data = eval(raw_input("enter number: ")) enter number: 5 + 17 >>> data, type(data) (22, <type 'int'>)
note: should careful when using input
in python 2.x. explained why 1 should careful when using it, in this answer.
but, raw_input
doesn't evaluate input , returns is, string.
>>> import sys >>> sys.version '2.7.6 (default, mar 22 2014, 22:59:56) \n[gcc 4.8.2]' >>> data = raw_input("enter number: ") enter number: 5 + 17 >>> data, type(data) ('5 + 17', <type 'str'>)
python 3.x
python 3.x's input
, python 2.x's raw_input
similar , raw_input
not available in python 3.x.
>>> import sys >>> sys.version '3.4.0 (default, apr 11 2014, 13:05:11) \n[gcc 4.8.2]' >>> data = input("enter number: ") enter number: 5 + 17 >>> data, type(data) ('5 + 17', <class 'str'>)
solution
to answer question, since python 3.x doesn't evaluate , convert data type, have explicitly convert int
s, int
, this
x = int(input("enter number: ")) y = int(input("enter number: "))
you can accept numbers of base , convert them directly base-10 int
function, this
>>> data = int(input("enter number: "), 8) enter number: 777 >>> data 511 >>> data = int(input("enter number: "), 16) enter number: ffff >>> data 65535 >>> data = int(input("enter number: "), 2) enter number: 10101010101 >>> data 1365
the second parameter tells base of numbers entered , internally understands , converts it. if entered data wrong throw valueerror
.
>>> data = int(input("enter number: "), 2) enter number: 1234 traceback (most recent call last): file "<input>", line 1, in <module> valueerror: invalid literal int() base 2: '1234'
apart that, program can changed little bit, this
while true: ... ... if input("play again? ") == "no": break
you can rid of play
variable using break
, while true
.
ps: python doesn't expect ;
@ end of line :)
Comments
Post a Comment