如何使用Python打印帕斯卡三角,基于11幂次的代码输出异常如何修复
帕斯卡三角实现问题解决方案
问题结论
split()方法可以解决当前的输出异常问题,需要搭配字符串转换操作完成。
原代码问题分析
- 初始化
res时提前添加了p个全0子列表,后续循环又追加了11的幂次整数值,导致最终结果存在冗余的全0项,且追加的内容是整数而非符合要求的数字子列表 - 需要将11的i次幂的每一位数字拆分出来,再补0到长度为p,才能匹配预期输出格式
调整后代码
def pascal(p): res = [] for i in range(p): # 转字符串后用空格拼接每一位,再用split拆分得到单数字字符串列表 num_str_list = ' '.join(str(11 ** i)).split() # 转换为整数列表 num_list = [int(x) for x in num_str_list] # 补0到长度为p num_list += [0] * (p - len(num_list)) res.append(num_list) return res p = 3 print(pascal(p))
运行上述代码输出结果为:[[1, 0, 0], [1, 1, 0], [1, 2, 1]]
注意事项
基于11幂次的实现方式仅在p≤5时有效。当p>5时,11的幂次会出现两位及以上的数字,直接拆分每一位得到的结果会和帕斯卡三角的实际值不符,如果需要支持更大的p,建议改用相邻元素求和的常规帕斯卡三角实现方式。
内容的提问来源于stack exchange,提问作者abd
相关产品推荐
相关产品推荐

