首页 > 解决方案 > 编写一个程序来制作一个八进制金字塔并对最后一行求和

问题描述

我正在做一个学校作业,我需要从一个八进制数“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)

标签: pythonlist

解决方案


推荐阅读