上QQ阅读APP看书,第一时间看更新
4.5 调试
这里通过设置一些错误让读者认识在编写代码过程中的常见问题,以帮助读者熟悉和解决实际遇到的问题。
(1)使用格式化整数的占位符格式化字符串,例如:
>>> print ('hello,%d' % 'world') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: %d format: a number is required, not str
输出结果告诉我们需要一个数字,而不是字符串。
(2)在使用%f输出圆周率的示例中,若更改为使用%d输出,结果会怎样?输入如下:
>>> print ('圆周率PI的值为:%d' % 3.14) 圆周率PI的值为:3
结果把小数点后的数值都抛弃了。
(3)在用0填充的示例中,把010的第一个0更改为其他数字,看看输出结果。再在精度之前添加一个0或大于0、小于0的数字,看看输出结果。
>>> print ('圆周率PI的值为:%06.2f' % 3.141593) 圆周率PI的值为:003.14 >>> print ('圆周率PI的值为:%16.2f' % 3.141593) 圆周率PI的值为: 3.14 >>> print ('圆周率PI的值为:%.02f' % 3.141593) 圆周率PI的值为:3.14 >>> print ('圆周率PI的值为:%.12f' % 3.141593) 圆周率PI的值为:3.141593000000 >>> print ('圆周率PI的值为:%.-12f' % 3.141593) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: unsupported format character '-' (0x2d) at index 11
由输出结果看到,将宽度前面的0更改为其他数字会认作宽度值,而不是填充值。在精度前面加0对结果没有影响;若添加大于0的数字,则作为小数的实际位数输出,位数不够后面补0;若添加小于0的数字,则报异常。