编写程序制作八进制金字塔并对最后一行求和

2024-06-25 22:40:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做一个学校作业,我需要从一个八进制数字“s”开始,然后连续增加一个八进制值“d”,然后把它变成一个有行“r”的金字塔。然后,我需要把最后一行中的所有数字相加

我有下面的代码,但它经常出现故障。它只适用于某些测试用例,我将它们与代码一起附在下面。例如,它适用于测试用例2、3、5,它应该为您提供36。它也适用于1、4和20,这将为您提供230。但是它对10,10,10这样的东西不起作用

我做错了什么

import decimal

def sumOfLastRow(s, d, r):
    lastnums = []
    lrow = 1
    
    f = str(s)
    b = int(f, 8)
    s = b
    
    x = 0
    stop = 2
    for x in range(r):
        
        for column in range(1, stop):
            print(oct(s), end=' ')
            s += d
        print("")
        stop += 1
    
    s -= d
    
    while (lrow <= r):
        lastnums.append(oct(s)[2:])
        s -= d
        lrow += 1
    
    lastnums = list(map(lambda ele: sum(int(sub) for sub in str(ele)), lastnums))     
    lastnums = sum(lastnums)
    print(lastnums)
    return(lastnums)

Tags: 代码infor测试用例range数字octint