点击上方“Python3X”,选择“置顶或者星标”
第一时间收到精彩推送!
Python Every Day, 第 29 天
用Python生成一个高28行由字母组成的等腰三角形,效果如下图所示
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYZAZYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYZABAZYXWVUTSRQPONMLKJIHGFEDCBA
注意项:
1、需要注意每行前面的空格数
2、每一行都是对称的
3、列表分片的操作
4、单行在26个字母范围内,和超过之后需要补齐
代码如下:
def triangle(row):
# %c 用于格式化ascii码
# alphabet = ['%c' % i for i in range(65, 65 + 26)]
# 或者通过下面的方法也可以生成一个字母列表
import string
alphabet = [i for i in string.ascii_uppercase]
for i in range(1, row + 1):
# 26个字母以内的情况
if i <= 26:
string = ''.join(alphabet[:i] + list(reversed(alphabet[:i - 1])))
else:
# 超出26个字母以后,顺次累加
j = i - 26
string = alphabet + alphabet[:j] + list(reversed(alphabet + alphabet[:j - 1]))
string = ''.join(string)
print(' ' * (row - i) + string)
triangle(28)
大家可以先自己思考一下,或者配合debug模式运行一遍,对理解会有很大的帮助。
以上,便是今天的分享,希望大家喜欢,觉得内容不错的,欢迎点击「在看」支持,谢谢各位。
如需查看更多[Python Every Day]系列,请点击我的主页的【每日一题】菜单。
感谢您的阅读