You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于int_to_Roman函数实现sum_roman罗马数字求和表功能

整数转罗马数字及求和表实现方案

你已经完成的int_to_Roman函数逻辑是正确的,它通过匹配预定义的数值-符号对,高效地将整数转换为罗马数字。下面基于这个函数实现sum_roman函数,生成1到指定整数的罗马数字求和表:

完整代码实现

class py_solution:

    def int_to_Roman(self, num):
        val = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
        syb = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]
        roman_num = ''
        a = 0
        while num > 0:
            for _ in range(num // val[a]):
                roman_num += syb[a]
                num -= val[a]
            a += 1
        return roman_num

    def sum_roman(self, n):
        # 构建Markdown格式的求和表
        table_rows = ["| 十进制 | 罗马数字 | 累计和 |"]
        table_rows.append("|--------|----------|--------|")
        total_sum = 0
        # 遍历1到n的所有整数
        for num in range(1, n + 1):
            roman_str = self.int_to_Roman(num)
            total_sum += num
            # 格式化每一行内容,保证对齐美观
            table_rows.append(f"| {num:>6} | {roman_str:>8} | {total_sum:>6} |")
        # 返回拼接好的表格字符串
        return '\n'.join(table_rows)

函数说明

  • sum_roman函数接收一个整数n作为输入,生成从1到n的罗马数字求和表:
    1. 初始化表格的表头和分隔行,采用Markdown表格格式,方便阅读;
    2. 初始化累计和变量total_sum,从0开始累加;
    3. 遍历1到n的每个整数,调用int_to_Roman转换为罗马数字,同时更新累计和;
    4. 将每个数的十进制值、罗马数字、当前累计和格式化为表格行,最终拼接成完整的表格字符串返回。

使用示例

sol = py_solution()
# 生成1到10的求和表
print(sol.sum_roman(10))

输出结果:

| 十进制 | 罗马数字 | 累计和 |
|--------|----------|--------|
|      1 |        I |      1 |
|      2 |       II |      3 |
|      3 |      III |      6 |
|      4 |       IV |     10 |
|      5 |        V |     15 |
|      6 |       VI |     21 |
|      7 |      VII |     28 |
|      8 |     VIII |     36 |
|      9 |       IX |     45 |
|     10 |        X |     55 |

内容的提问来源于stack exchange,提问作者Spuddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 16:07:33