用户:
Planet_Cube查看:0 回复:2 评论:0 创建时间:2021-12-12T09:13:47
【作品展示】

【作品介绍】
继上一个作品增加了输出字符串的功能,更加便于理解!
【作品源代码】
# 注:输入必须为列表形式!
# 由于计算机的编程法则是从0开始的,而且这也符合数学规则,所以在使用时请一定要注意
# 定义杨辉三角产生下一行的规则
def row_next(row):
new_row = [1] # 给定初始数,杨辉三角的默认起点是1
for i in range((len(row) - 1)): # 遍历上一行
new_row.append((row[i] + row[(i + 1)])) # 产生新行
new_row.append(1) # 加上新行的“尾巴”
return new_row # 得到结果
# 生成整个杨辉三角(由于在外国它叫帕斯卡三角所以我给它命名为pascal_tr)
def pascal_tr(row):
num_list = [[1]] # 给定初始行
for i in range(row): # 重复所需要的行数
num_list.append(row_next(num_list[-1])) # 添加新行
return num_list # 得到矩阵形式的杨辉三角
# 单独获取杨辉三角的一行
def get_row_PT(row):
return pascal_tr(row)[row]
# 单独获取杨辉三角一行的一个数
def get_num_PT(row, column):
return pascal_tr(row)[row][column]
# 以便于理解的字符串形式输出杨辉三角(我在此把差1原则调整了,便于理解)
def out_tr(row):
tr = pascal_tr(row)
out = ''
for i in range(row):
out += '第' + str(i+1) + '行:'
for j in range(i+1):
if j == i and i == row-1:
out += str(tr[i][j]) + '.'
elif j == i:
out += str(tr[i][j]) + ';'
else:
out += str(tr[i][j]) + ', '
out += '\n'
return out
# 以便于理解的字符串形式输出杨辉三角的一行(我在此把差1原则调整了,便于理解)
def out_row(row):
r = get_row_PT(row-1)
out = '第' + str(row) + '行:'
for i in range(row):
if i == row-1:
out += str(r[i]) + '.'
else:
out += str(r[i]) + ', '
return(out)
# 测试一下(可自行修改)
print(row_next([1,4,6,4,1])) # 结果为[1, 5, 10, 10, 5, 1]
print(pascal_tr(10)) # 结果为[[1], [1, 1], ···, [1, 10, 45, ···, 10, 1]]
print(get_row_PT(12)) # 结果为[1, 12, 66, ···, 220, 66, 12, 1]
print(get_num_PT(12, 9)) # 结果为220
print(out_tr(5))
print(out_row(10))
# 结尾
print('如果喜欢的话点个赞吧,我会后续推出更多内容!')
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn