当前位置: 代码迷 >> 综合 >> Python课后作业 2. 杨辉三角 ---- (第七次作业)
  详细解决方案

Python课后作业 2. 杨辉三角 ---- (第七次作业)

热度:64   发布时间:2023-11-17 18:40:07.0

文章目录

    • 前引
    • 原题题目
    • 代码实现(未完全AC 31/35分)
    • 代码实现(mayufeisama 35/35完全AC)
    • 提交结果(未完全正确)
    • 提交结果(mayufeisama 完全正确)


前引


这道题其实用二维列表我很快就做出来杨辉三角形了
但是很无奈的是 这道题要求格式输出真的很复杂
我调试了一个半小时 都没有把完全正确的格式调出来 ?

于是我就去私信老师 把这次的作业题有两个地方有问题的指了出来
老师也去改正了这道题和 一个文件操作题
我确实没看懂那个格式输出是什么意思
但是也没有办法 再给我两个小时也可能出不了货
反正因为格式扣分一道题就扣了 4分左右

如果这道题有把格式输出正确的hxd 看到了这里 希望你能够在评论区留下你宝贵的代码 然后我也会在博客中再补充这道题 得分35/35的正确代码 ??

现已更新了正确AC代码 ?? ??mayufeisama hxd


原题题目


在这里插入图片描述


代码实现(未完全AC 31/35分)


def printtriangle(triangle,width):column=len(triangle[-1])*widthfor sublist in triangle:result=[]for contents in sublist:result.append('{0:^{1}}'.format(str(contents),width))print('{0:^{1}}'.format(''.join(result),column))num = int(input())
l = [];max = 0
for i in range(num):l.append([])l[i].append(0)if i>=1:for j in range(0,i):l[i].append(l[i-1][j]+l[i-1][j+1])templen = len(str(l[i][j]))max = templendel l[i - 1][0]l[i].append(1)if i == num-1 :del l[i][0]width=len(str(l[-1][len(l[-1])//2]))*2
printtriangle(l,width)

代码实现(mayufeisama 35/35完全AC)


def yh(li):l=[]l.append(c)s = len(li)r=""for i in range(1,s):r =eval(li[i-1]) + eval(li[i])rl=len(str(r))g2=[]for j in range(ysl-rl):g2.append(" ")ys="".join(str(i) for i in g2)+str(r)l.append(ys)l.append(c)return l
def jc(n):j=1for i in range(1,n+1):j*=ireturn j
n=int(input())
lis=[1]
b=(n-1)//2
max=jc(n-1)/jc(b)/jc(n-1-b)
max=int(max)
ysl=len(str(max))
g1=[]
for j in range(ysl-1):g1.append(" ")
c="".join(str(i) for i in g1)+"1"
g3=[]
for j in range(ysl):g3.append(" ")
jg="".join(str(i) for i in g3)
for i in range(n):gs=[]for j in range(n-i):gs.append(jg)sc="".join(str(i) for i in gs)+jg.join(str(i) for i in lis)print(sc)lis=yh(lis)

提交结果(未完全正确)


在这里插入图片描述


提交结果(mayufeisama 完全正确)


在这里插入图片描述