杨辉三角
练习题目
代码运行效果
第六行起,“三角”排列有些“变形”,造成原因是,有了多于一位的数字,数字位数越多,三角变形就越厉害。如果都用相同的宽度打印“三角”的每一个数字,“杨辉三角”就会是一个标准的等腰三角形。😋😋
修改每一个“杨辉三角”数字打印宽度,就可以打印出更多行排列齐整的“三角”。
例如:把每个数字的打印宽度设置为 5 ,在 111 的宽度上就可以打印出 18 行齐整的“三角”。
python 代码(数字打印宽度 5 ):
n = 18
print(f'\n\n\n{"杨辉三角":_^107}\n\n')
print(f'{"":_^111}')
Pascal_list = Pascal_triangle(n)
for i in Pascal_list:
print(f'{" ".join([f"{int:.^5}" for int in i]):_^111}')
print(f'{"":_^111}')
print(f'\n\n{"The End":_^111}\n')
python完整代码
(如果从语句注释不能清楚作用,请评论区留言指教和探讨。🤝)
# coding: utf-8
def Pascal_triangle(n):
'''杨辉三角二维列表生成'''
if n == 0: #n为零时杨辉三角列表为空。
return []
if n == 1: #n为零时杨辉三角列表为[1]。
return [[1]]
if n == 2: ##n为零时杨辉三角列表为[1], [1, 1]。
return [[1], [1, 1]]
Pascal_list = [[1], [1, 1]]
for i in range(3, n + 1): # n > 2 时,杨辉三角当前行除了首尾,都等于上一行当前位置和前一位置的两个数的和。
temp = [] #初始化当前行这空。
for k in range(i): #每一行的元素个数等于行数数字。
if k == 0 or k == i - 1: #每一行首尾都是 1 。
temp.append(1)
else: #每一行其他元素等于上一行当前位置和前一位置的两个数的和。
temp.insert(k, Pascal_list[i - 2][k - 1] + Pascal_list[i - 2][k]) #从第三行开始计算,所以是 i - 2 行。
Pascal_list.append(temp) #当前行追加到杨辉三角列表。
return Pascal_list #返回杨辉三角列表。
n = 12 #生成杨辉三角的行数。
print(f'\n\n\n{"杨辉三角":_^38}\n\n') #打印结果输出第一行提示。
Pascal_list = Pascal_triangle(n) #调用函数生成杨辉三角列表。
for i in Pascal_list: #遍历列表打印杨辉三角。
print(f'{" ".join([str(int) for int in i]):^42}') #当前行解析成字符并用 ' '.join(str) 拼接成字符串居中打印输出。
print(f'\n\n{"The End":_^42}\n') #打印结果输出最后一行提示。
我的HOT博:
- New:罗马数字转换器|罗马数字生成器(当前阅读1105)
- New让QQ群昵称色变的神奇代码(当前阅读1521)
- 斐波那契数列(递归实现和for实现)(当前阅读1846)
- 排序数组中查找元素的重复起止位置(当前阅读1204)
- 柱状图中最大矩形(当前阅读1608)
- 电话拨号键盘的字母组合(当前阅读1225)
- 密码强度检测器(当前阅读1670)
- 求列表平衡点(当前阅读1705)
- 字符串统计(当前阅读2083)
- 尼姆游戏(代码优化版)(当前阅读825)
- Hot:尼姆游戏(聪明版首发)(当前阅读3247)
推荐条件 点阅破千
参考文章:
上一篇: 对 Ctrl + D 、 Ctrl + Z 终止 sys.stdin 的测试
下一篇: 练习:移除元素
好文力荐:靠谱程序员的好习惯
回首页
精品文章:
- OPP三大特性:封装中的property
- 通过内置对象理解python'
- 正则表达式
- python中“*”的作用
- Python 完全自学手册
- 海象运算符
- Python中的 `!=`与`is not`不同
- 学习编程的正确方法
来源:老齐教室
CSDN实用技巧博文: