打印数字的显示为空白

时间:2017-07-16 07:52:36

标签: python python-3.x

以下是来自 Python 3编程的代码:Python语言的完整介绍

    import sys


    Zero = ["  ***  "," *   * ","*     *","*     *","*     *"," *   * ","  ***  "]

    One = [" * ", "** ", " * ", " * ", " * ", " * ", "***"]

    Two = [" *** ", "*   *", "*  * ", "  *  ", " *   ", "*    ", "*****"]

    Three = [" *** ", "*   *", "    *", "  ** ", "    *", "*   *", " *** "]

    Four = ["   *  ", "  **  ", " * *  ", "*  *  ", "******", "   *  ",
    "   *  "]

    Five = ["*****", "*    ", "*    ", " *** ", "    *", "*   *", " *** "]

    Six = [" *** ", "*    ", "*    ", "**** ", "*   *", "*   *", " *** "]

    Seven = ["*****", "    *", "   * ", "  *  ", " *   ", "*    ", "*    "]

    Eight = [" *** ", "*   *", "*   *", " *** ", "*   *", "*   *", " *** "]

    Nine = [" ****", "*   *", "*   *", " ****", "    *", "    *", "    *"]

    Digits = [Zero, One, Two, Three, Four, Five, Six, Seven, Eight, Nine]

    try:
        digits = sys.argv[0]
        row = 0
        while row < 7:
            line = ""
            column = 0
            while column < len(digits):
                number = int(digits[column])
                digit = Digits[number]
                line += digit[row] + "  "
                column += 1
            print(line)
            row += 1
    except IndexError:
        print("usage: bigdigits.py <number>")
    except ValueError as err:
        print(err, "in", digits)

当我运行bigdigits.py时,它会显示:

enter image description here

我的Python版本是3.5.3。

2 个答案:

答案 0 :(得分:1)

尝试在盲目复制和粘贴代码之前了解您正在复制的代码。

这里的问题是digits = sys.argv[0]。您还忽略了使用部分'usage: bigdigits.py <number>',作者显然误解了sys.argv

正在运行python bigdigits.py {number} - &gt; sys.argv['bigdigits.py', 'number'] - &gt;使用digits = sys.argv[1]实际从命令行参数中检索数字。 您必须为程序提供一个命令行参数(一个数字)或将digits = sys.argv[0]更改为一个带有数字的字符串,例如digits = "1"

我没有IDLE可用,所以我不确定用作sys.argv[0]的是什么以及为什么它不会抛出错误。您可以打印sys.argv[0]来测试它。

从代码示例中,本书中的代码非常糟糕。内部while(while column < len(digits):)对于所有数字而言都是完全冗余的。 10.变量命名(资本案例)是可怕的。使用不同的变量同样如此(digitsDigits)。 for会更好,而不是while。如果这个例子是介绍while的概念,那就是一个相当糟糕的例子。只是我的2cents。

答案 1 :(得分:-2)

Digits定义之前有一个额外的空格。这是语法错误,因此阻止程序运行。