注册 登录
编程论坛 Python论坛

初学python,有个小问题,麻烦大侠们帮忙,谢了

zcxuexi 发布于 2012-05-16 15:49, 1321 次点击
1, b=int(3.3)
   print b     这个能够正确输出3

2,b=raw_input()
  a=int(b)
  print a     假如输入3.3,也能够正确输入3.3

3,a=int(raw_input())
  print a     假如输入3.3却提示错误
Traceback (most recent call last):
  File "C:/Python26/1.py", line 1, in <module>
    a=int(raw_input())
ValueError: invalid literal for int() with base 10: '3.3'

请问大侠们,第三种情况为何错误呢?
12 回复
#2
快乐出发02202012-05-19 14:40
raw_input()必须先返回一个值,否则不会有输入的。
#3
chenqiang3312012-06-11 09:29
就是这样  合起来写 不行 。
#4
快乐出发02202012-06-15 12:42
嗯嗯,其实你也可以试着解决的,毕竟程序都是人写出来的。
#5
pangding2012-06-17 16:56
不用组合,你写 int('3.3') 也是这个错误。
#6
快乐出发02202012-06-22 13:09
int('3.3')不会出现错误的
#7
pangding2012-06-23 22:11
回复 6楼 快乐出发0220
我的 python 为什么不行?
Python 2.7.3 (default, Apr 20 2012, 22:39:59)

[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> int('3.33')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '3.33'
>>>

#8
快乐出发02202012-06-24 10:53
'3.33'是一个字符串,int('3.33')是不可以的,但是int(3.33)是可以的,这个为什么一定要raw_input()必须先返回一个值的原因,这样的话返回了一个值之后就不会是字符串了。
#9
pangding2012-06-24 11:00
回复 8楼 快乐出发0220
明白了,但难道你在6楼说的只是在误导我?
另外如果我有个字串,怎么把它变成数值呀?
#10
mmc2672012-06-29 21:09
raw_input的返回值为字符串。
>>> raw_input()
5+2
'5+2'

所以a=int(raw_input())可以写成a=int(eval(raw_input()))
即:
>>> a=int(eval(raw_input()))
3.3
>>> print a
3

上面这种写法可以写成:
>>> b=int(input())
3.3
>>> print b
3

因为
>>> help (input)
Help on built-in function input in module __builtin__:

input(...)
    input([prompt]) -> value
   
    Equivalent to eval(raw_input(prompt)).
(END)

#11
快乐出发02202012-07-01 09:31
嗯嗯,就是上楼的意思了。。。
#12
huangdouaini2012-07-09 16:19
打酱油
#13
loulanhouzhu2012-08-09 16:30
回复 楼主 zcxuexi
int 是整型,你输入3.3当然不对了
1