免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3663 | 回复: 10
打印 上一主题 下一主题

刚开始学习python,遇到一个问题,请指点,谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-13 17:41 |只看该作者 |倒序浏览
在交互方式下
>>>int(12.34)
>>>12
没有问题,但是如果写在一个py文件里面比如
str=raw_input('input number:')
print 'number is %d' % (int(str))
执行的时候输入12.34就会报错“ValueError invalid literal for int() with base 10 :'12.34'”,请问这个是什么原因呢?

论坛徽章:
0
2 [报告]
发表于 2008-08-13 17:49 |只看该作者

  1. >>> int("12")
  2. 12
  3. >>> int("12.32")
  4. Traceback (most recent call last):
  5.   File "<stdin>", line 1, in <module>
  6. ValueError: invalid literal for int() with base 10: '12.32'
  7. >>>
复制代码


你用 raw_input 读进来的是字符串。

论坛徽章:
0
3 [报告]
发表于 2008-08-13 18:02 |只看该作者
应该是字符串如果带小数不能直接被转换为整型,交互模式下的12.34是不是字符串。
交互模式下把12.34给字符串,再用Int转换也是同样的问题。

论坛徽章:
0
4 [报告]
发表于 2008-08-13 18:08 |只看该作者
哦,原来是这个意思,那请问有什么办法可以解决这个问题么?就是说可以让用户输入一个带小数的数值,然后转换成整数输出出来

论坛徽章:
0
5 [报告]
发表于 2008-08-13 18:19 |只看该作者
有没有类似强制类型转换之类的函数呢?

论坛徽章:
0
6 [报告]
发表于 2008-08-13 18:50 |只看该作者
int() 工厂函数是把数字和字符串转换为整型类,其中字符串只能包含数字
可以先把float()转换成浮点型,再转换

a=(raw_input('input number:'))
print 'number is %d' % int(float(a))

论坛徽章:
0
7 [报告]
发表于 2008-08-13 18:59 |只看该作者
用 try, except 包装一下,输入不合法就让用户重新输入。那本 '热书' 的第十章有一个关于 float 的类似例子。

论坛徽章:
0
8 [报告]
发表于 2008-08-14 09:33 |只看该作者
有两种办法,不过意思都是先转为float型,然后int,6楼的方法是对的。
1.
>>> a = '12.34'
>>> b = int(float(a))
>>> b

2.
>>> import string
>>> b = int(string.atof(a))
>>> b

论坛徽章:
0
9 [报告]
发表于 2008-08-14 11:21 |只看该作者
原帖由 retuor 于 2008-8-13 18:59 发表
用 try, except 包装一下,输入不合法就让用户重新输入。那本 '热书' 的第十章有一个关于 float 的类似例子。


en, 这里看错需求了,不好意思。

除了上面几位朋友的方法外,我再提供一些方法。

如果只想要小数点之前的部分,可以这样


  1. a=raw_input()
  2. a=a.split('.')[0]
  3. a=int (a)
复制代码


即使输入没有小数点也可以得到正确结果。

如果你希望更精确地控制从 float 到 int 的转换,可以采用 math 模块里的 ceil 和 floor.

论坛徽章:
0
10 [报告]
发表于 2008-08-14 11:26 |只看该作者
多谢楼上各位的指点,我先试验一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP