Python两数相加进位统计代码仅单次执行不循环问题求助
整数相加进位次数统计问题排查与修复
问题根因
- 原代码使用
if判断代替循环逻辑,代码块只会执行1次,且return count语句写在判断块内部,第一次执行完就直接返回结果,无法遍历所有数位 - 未记录前序位产生的进位值,计算当前位的和时没有加上前序进位,会导致进位统计错误
- 循环终止条件仅参考num1的长度,若num2位数更多时会出现漏算
修复后可正常运行的代码
def NumberOfCarries(num1, num2): count = 0 carry = 0 # 记录前一位的进位值 # 只要两个数还有未处理的数位就继续循环 while num1 > 0 or num2 > 0: n1 = num1 % 10 n2 = num2 % 10 current_sum = n1 + n2 + carry if current_sum >= 10: count += 1 carry = 1 else: carry = 0 # 移除已经处理过的最后一位 num1 = num1 // 10 num2 = num2 // 10 return count num1 = int(input("> ")) num2 = int(input("> ")) print(NumberOfCarries(num1, num2))
验证说明
输入测试用例451和349时,代码会逐位计算:
- 个位:1 + 9 + 0 = 10,进位次数+1,进位值记为1
- 十位:5 + 4 + 1 = 10,进位次数+1,进位值记为1
- 百位:4 + 3 + 1 = 8,无进位
最终返回结果为2,符合预期。
内容的提问来源于stack exchange,提问作者alisha j
相关产品推荐
相关产品推荐

