如何基于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的罗马数字求和表:- 初始化表格的表头和分隔行,采用Markdown表格格式,方便阅读;
- 初始化累计和变量
total_sum,从0开始累加; - 遍历1到
n的每个整数,调用int_to_Roman转换为罗马数字,同时更新累计和; - 将每个数的十进制值、罗马数字、当前累计和格式化为表格行,最终拼接成完整的表格字符串返回。
使用示例
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
相关产品推荐
相关产品推荐

