编写Python脚本实现多位数逐位求和直至得到单个数字
原代码错误点梳理
- 函数首行执行
n = []直接覆盖了输入的参数,后续所有判断逻辑的判断对象都变成了空列表,完全失效 - 输入校验逻辑完全错误:原判断条件
(n <= 9) or (n >= 1)会误判所有合法输入,且未单独处理输入为0的情况 - 末尾的递归调用属于无效代码,永远不会被触发
- 语法层面存在缩进错误,原代码的if语句缩进和上一行不一致,运行会直接报错
修正后实现代码
def SumDig(n): # 非int类型直接返回错误 if not isinstance(n, int): return "Error" # 输入为0的特殊处理规则 if n == 0: return 0 # 1-9的数字返回错误 if 1 <= n <= 9: return "Error" # 大于等于10的数字用数根公式计算,结果等价于逐位求和到单个数字 return (n - 1) % 9 + 1
功能验证测试用例
SumDig(10)→ 返回1,符合需求示例SumDig(0)→ 返回0,符合规则SumDig(7)→ 返回Error,符合规则SumDig("123")→ 返回Error,符合规则SumDig(1234)→ 1+2+3+4=10→1+0=1,返回1,结果正确
内容的提问来源于stack exchange,提问作者student_1
相关产品推荐
相关产品推荐

