python习题错误整理(一)

  题目:

  编写程序显示下面的表格:

  a      a^2     a^3

  1         1        1

  2         4        8

  3         9        27

  4        16       64

方法一:

In [1]: a = [1,2,3,4]

In [2]: for x in a:
   ...:     print(x,x*x,x*x*x)
   ...:
1 1 1
2 4 8
3 9 27
4 16 64

这种方法能输出结果,但显示的方式与要求并不一致。

方法二:

In [104]: def print_table(a):
...: for x in range(1,a):
...: print(str("%-3d,%-3d,%-3d" % (x,x*x,x*x*x)).replace(',',''))
...:

In [105]: print_table(5)
1 1 1
2 4 8
3 9 27
4 16 64

这种方法提升了代码的使用性,并实现了格式的对照要求。

知识补充》提示符:

格式符为真实值预留位置,并控制显示的格式。格式符可以包含有一个类型码,用以控制显示的类型,如下:

%s    字符串 (采用str()的显示)

%r    字符串 (采用repr()的显示)

%c    单个字符

%b    二进制整数

%d    十进制整数

%i    十进制整数

%o    八进制整数

%x    十六进制整数

%e    指数 (基底写为e)

%E    指数 (基底写为E)

%f    浮点数

%F    浮点数,与上相同

%g    指数(e)或浮点数 (根据显示长度)

%G    指数(E)或浮点数 (根据显示长度)

%%    字符"%"

写这道题时,出现了以下几种错误的解题思路:

错误:

In [77]: def print_table(a):
    ...:     for x in range(1,a):
    ...:         num = "%d,%d,%d" % (x,x*x,x*x*x)
    ...:     print(num)
    ...:
    ...:

In [78]: print_table(4)
3,9,27

错误之处在于,将for循环输出的值在循环内部赋值给一个变量,这使得每次循环,变量的值都会被最后一次循环的值所覆盖。

并且题目要求每一行的值都被打印出来,故应该在循环内部使用print打印出结果。

原文地址:https://www.cnblogs.com/AimeeCodeWorld/p/7368397.html