您的位置:首页 > 其它

列表图形打印--------字符串处理经典习题

2018-04-12 10:56 417 查看

导文

思想,在平时非业务面试或者打印相关图形时,通常采用列表的形式进行打印,如下就是非常经典的两练习习题,重要的是思想,思维和方式,具体总结如下:

打印图形



重点分析

每个行和列要对齐,至于多少宽度要根据自动生成时,计算偏移宽度;

其实每一行就是一个列表,列表采用” “.join(iterable)字符串处理将列表转换成字符串序列,可见” “.join()字符串处理函数的重要性

最核心的就是计算最后一行的长度,即可知道其他行的偏移量的长度。

最后一行才能确定长度

代码 实现

#!/bin/python3
#-*- coding: UTF-8 -*-
#created time 2018-04-12
def tri(m):
count = " ".join([str(x) for x in range(m,0,-1)])
length = len(count)
#计算最后一行长度
for i in range(1,m):
cout = " ".join([str(x) for x in range(i,0,-1)])
print('{:>{}}'.format(cout,length))
print(count)
print(tri(12))


为方便测试,将空格替换为#可知:



代码实现

#!/bin/python3
#-*- coding: UTF-8 -*-
#created time 2018-04-12
def tri(m):
count = "#".join([str(x) for x in range(m,0,-1)])
length = len(count)
for i in range(1,m):
cou
4000
t = "#".join([str(x) for x in range(i,0,-1)])
print('{:>{}}'.format(cout,length))
print(count)
print(tri(12))


到序打印



重点分析

字符串处理将列表转换为字符串,整个第一行就形成str容器

依次递减,采用字符串切片,切片条件是什么?当str[i]等于空格或者其他字符时进行切片

整个列表偏移宽度可通过第一行即可知道序列宽度

代码实现

先采用#号连接更加方便追踪

#!/bin/python3
#-*- coding: UTF-8 -*-
#created time 2018-04-12
def tri(m):
count = "#".join([str(x) for x in range(m,0,-1)])
length = len(count)
print(count)
for i in range(length):
if count[i] == "#":
cout = count[i:]
print('{:>{}}'.format(cout,length))
print(tri(12))


打印结果



替换#号代码实现

#!/bin/python3
#-*- coding: UTF-8 -*-
#created time 2018-04-12
def tri(m):
count = " ".join([str(x) for x in range(m,0,-1)])
length = len(count)
print(count)
for i in range(length):
if count[i] == " ":
cout = count[i:]
print('{:>{}}'.format(cout,length))
print(tri(12))


运行结果



总结

类似解法

通过字符串处理+列表生成式,将列表转换为字符串

通过字符串的长度确定偏移量

递减采用列表或序列切片的方式进行解决
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: