以下是来自 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
时,它会显示:
我的Python版本是3.5.3。
答案 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.变量命名(资本案例)是可怕的。使用不同的变量同样如此(digits
和Digits
)。 for
会更好,而不是while
。如果这个例子是介绍while
的概念,那就是一个相当糟糕的例子。只是我的2cents。
答案 1 :(得分:-2)
在Digits
定义之前有一个额外的空格。这是语法错误,因此阻止程序运行。