跳起来学编程 发表于 2021-1-11 06:57:38

将数字转化成LCD形式代码不理解

本帖最后由 跳起来学编程 于 2021-1-11 07:15 编辑

font =""" _   __   _____
| || _| _||_||_ |_   ||_||_|
|_|||__|| _||_|||_| _|"""
while True:
    num = input('请输入数字:')
    if num.isdigit():
      break
    else:
      print('输入错误!', end = '')
for line in range(3):
    for n in num:
      print(font, end = '')
    print()

跳起来学编程 发表于 2021-1-11 06:59:28


      print(font, end = '')
    print()
这串代码不理解

跳起来学编程 发表于 2021-1-11 07:13:42

删去最后一行代码则打印笔画数,不能打印出成形的lcd数字形式,不懂为什么要这样写还是这个31是?....3:31是切片吗?....我好蔡

hrp 发表于 2021-1-11 07:18:06

列表切片,加个括号上去就清楚了
print(font[(31 * line + int(n) * 3) : (31 * line + int(n) * 3 + 3)], end = '')

跳起来学编程 发表于 2021-1-11 07:24:26

hrp 发表于 2021-1-11 07:18
列表切片,加个括号上去就清楚了
print(font[(31 * line + int(n) * 3) : (31 * line + int(n) * 3 + 3)], ...

为啥要乘个31

z5560636 发表于 2021-1-11 09:01:34

好像也不是很正确啊。

qq1151985918 发表于 2021-1-11 09:12:28

font =""" _   __   _____
| || _| _||_||_ |_   ||_||_|
|_|||__|| _||_|||_| _|"""
print(font)#我们直接将font打印看看他到底是什么状态
'''
_   __   _____
| || _| _||_||_ |_   ||_||_|
|_|||__|| _||_|||_| _|
'''
#上面就是font的实际状态,因为代码中没有对齐,所以看起来有点别扭

print(len(font))#我们打印一下font的整体字符串长度,是92


for i in font.split("\n"):
    print(len(i))#分别打印每行字符串长度,结果是30,30,30,每个数字分别由3个长度坐标组成
    #为什么加起来是90而不是92,因为字符串font本身含有两个换行符,所以后边用31作公因数
   
while True:
    num = input('请输入数字:')
    if num.isdigit():#检验输入是否完全由数字组成
      break
    else:
      print('输入错误!', end = '')

for line in range(3):#line==0,1,231*line 就分别是 0,31,62,就是每一行的第一个字符位置
    for n in num:
      a = 31 * line + int(n) * 3 #分别打印num组成数字的每行的开始坐标
      b = 31 * line + int(n) * 3 + 3#分别打印num组成数字的每行的结束坐标
      print(font, end = '')
      #相当于 print(font,end=''),for循环内不换行,因为num还没打印完毕,否则散架了
    print() #此时打印打印换行,因为line是逐行打印,由3行组成,本质就是font的新组合方式显示num
页: [1]
查看完整版本: 将数字转化成LCD形式代码不理解