测试题
1. int
函数总是向下取整(这个数左边的最大整数)。
2. 在我们的温度转换程序中,可以这样做吗?
cel = float(5 / 9 * (fahr - 32))cel = 5 / 9 * float(fahr - 32)
试试看,会发生什么:
>>> fahr = 75>>> cel = float(5 / 9 * (fahr - 32))>>> print cel0.0
为什么不能正常工作?
要记住,括号里的一切会先完成。所以它会先这样:
75 - 32 = 43
然后再这样做:
5 / 9 = 0
因为它会从左到右计算,所以先完成 5/9
。因为 5 和 9 都是整数,所以 Python 会完成整除,将答案向下取整。由于这个答案小于 1,所以会取整为 0。然后得到:
0 * 43 = 0
接下来:
float(0) = 0.0
执行到 float
时,已经太晚了——答案已经是 0 了!第二个公式也一样。
3. 可以“骗过”int
,让它四舍五入而不是向下取整,只需将传入 int
的数加 0.5。
右面是一个例子(交互模式中
>>> a = 13.2>>> roundoff = int(a + 0.5)>>> roundoff 13>>> b = 13.7>>> roundoff = int(b + 0.5)>>> b 14
如果原先的数小于 13.5,int
会得到一个小于 14 的数,这会向下取整为 13。
如果原来的数大于或者等于 13.5,int
会得到一个等于或者大于 14 的数,这就会向下取整为 14。
动手试一试
1. 可以使用 float
将字符串转换为小数:
>>> a = float('12.34')>>> print a12.34
不过我们怎么能知道这是数而不是字符串呢?下面来检查类型:
>>> type(a)<type 'float'>
2. 可以使用 int
把小数转换为整数:
>>> print int(56.78)56
结果会向下取整。
3. 可以使用 int
把字符串转换为整数:
>>> a = int('75')>>> print a75>>> type(a)<type 'int'>