“大写”的数字
我们在生活中的大量场景时常会看到屏幕上的各种类型的数字,类似时间报点、号码定位。
那么你是否思考过这是如何实现的呢,打印机是如何按照你的意愿来打出你输入的数字呢,如果没有那我们今天就通过一个很简单的python程序来讨论讨论这些数字是如何实现显示的。
建立字符库
我们观察可以发现每一个都是“*”的集合,那我们可以通过数字来进行构建字符库。
比如零“0”。(左边我们可以看到是否符合数字的外形,但如果每一个数字都这样子排布代码会显得很臃肿不整洁,所以我们需要将其平展开来。
Zero=['*****', Zero=['*****','* *','* *','* *','* *','* *','*****']
'* *',
'* *',
'* *',
'* *',
'* *',
'*****']
那设计完所有的数字后我们就能得到这样子完整的字符库了。
Zero=['*****','* *','* *','* *','* *','* *','*****']
One=[' * ',' ** ','* * ',' * ',' * ',' * ','*****']
Two=['*****',' *',' *','*****','* ','* ','*****']
Three=['*****',' *',' *','*****',' *',' *','*****']
Four=[' * ',' ** ','* * ','*****',' * ',' * ',' * ']
Five=['*****','* ','* ','*****',' *',' *','*****']
Six=['*****','* ','* ','*****','* *','* *','*****']
Seven=['*****',' *',' *',' * ',' * ',' * ','* ']
Eight=['*****','* *','* *','*****','* *','* *','*****']
Nine=['*****','* *','* *','*****',' *',' *','*****']
设计思路流程
要打出数字首先我们要先从用户那里获得数据,每一个数字都是由七个长度(七行)的列表组成的,所以我们先用while循环每一个行数再在其中用while循环每一个列数,然后我们将每一次列数循环的结果累加并赋值给一个变量,最后在每一次行数循环中将变量输出,并在下一次循环开始清空变量。
代码
digits = input("请输入你的数字:")
但如果用户输入的不是非负整数,程序就会报错,用户体验不好所以我们需要引入try语句来捕捉异常处理
try:
digits = input("请输入你的数字:")
row = 0
while row < 7:
col = 0
line = " "
while col < len(digits):
number = int(digits[col])
length = Digits[number]
add = length[row]
line += add + " "
col += 1
print(line)
row += 1
except ValueError as err:
print(err)
内部的while循环每次结束时,我们会打印出刚构建好的行。理解这一程序的关键之处在于我们将每个数字的row字符串添加到当前row的行。读者可以尝试运行该程序,以便理解其运作方式。
Zero=['*****','* *','* *','* *','* *','* *','*****']
One=[' * ',' ** ','* * ',' * ',' * ',' * ','*****']
Two=['*****',' *',' *','*****','* ','* ','*****']
Three=['*****',' *',' *','*****',' *',' *','*****']
Four=[' * ',' ** ','* * ','*****',' * ',' * ',' * ']
Five=['*****','* ','* ','*****',' *',' *','*****']
Six=['*****','* ','* ','*****','* *','* *','*****']
Seven=['*****',' *',' *',' * ',' * ',' * ','* ']
Eight=['*****','* *','* *','*****','* *','* *','*****']
Nine=['*****','* *','* *','*****',' *',' *','*****']
Digits=[Zero,One,Two,Three,Four,Five,Six,Seven,Eight,Nine]
while True:
try:
digits = input("请输入你的数字:")
row = 0
while row < 7:
col = 0
line = " "
while col < len(digits):
number = int(digits[col])
length = Digits[number]
add = length[row]
line += add + " "
col += 1
print(line)
row += 1
except ValueError as err:
print(err)
在结尾我们会对这个程序的输出进行稍许改变,以便让读者能更加理解这个程序的微妙之处。
结尾练习
这里我们将数字本身代替了”“符号的显示,要想做到这一点我们有两种方式
第一种就是直接改些字符库本身但是这样子并不便捷。
第二种通过再加一个循环,在循环中添加if判断来判断是空字符" “还是”**"字符
代码如下
Zero=['*****','* *','* *','* *','* *','* *','*****']
One=[' * ',' ** ','* * ',' * ',' * ',' * ','*****']
Two=['*****',' *',' *','*****','* ','* ','*****']
Three=['*****',' *',' *','*****',' *',' *','*****']
Four=[' * ',' ** ','* * ','*****',' * ',' * ',' * ']
Five=['*****','* ','* ','*****',' *',' *','*****']
Six=['*****','* ','* ','*****','* *','* *','*****']
Seven=['*****',' *',' *',' * ',' * ',' * ','* ']
Eight=['*****','* *','* *','*****','* *','* *','*****']
Nine=['*****','* *','* *','*****',' *',' *','*****']
Digits=[Zero,One,Two,Three,Four,Five,Six,Seven,Eight,Nine]
while True:
try:
digits = input("请输入你的数字:")
row = 0
while row < 7:
col = 0
line = " "
while col < len(digits):
number = int(digits[col])
length = Digits[number]
add = length[row]
change = 0
changes = ""
while change < len(add):
if add[change] == "*":
changes += str(number)
else:
changes += " "
change += 1
add = changes
line += add + " "
col += 1
print(line)
row += 1
except ValueError as err:
print(err)
except IndexError:
print("请输入数字")
来源:CSDN
作者:IT数科
链接:https://blog.csdn.net/weixin_44691703/article/details/88426164