• 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打印出结果。

  • 相关阅读:
    在 Java 中遍历 HashMap 的5种最佳方式
    Java 8 Stream.reduce() 使用示例
    Redis 为什么这么快?
    java8 常用代码
    为什么我们越娱乐反而会越无聊?
    Arrays.sort() VS Arrays.parallelSort()
    Java中枚举类型Enum的一种使用方式
    An illegal reflective access operation has occurred
    多线程中常见锁概述
    Java中创建多线程的三种方式
  • 原文地址:https://www.cnblogs.com/AimeeCodeWorld/p/7368397.html
Copyright © 2020-2023  润新知