Python代码调试:敌军损失数据恢复程序测试不通过,求修正
敌军损失数据恢复程序修复
任务描述
Zenyk记录了n天的敌军每日损失,但丢失了其中1天的数据。已知总损失为x,且每日损失均为正整数,需要恢复丢失那天的数据;若计算出的结果为非正整数,输出Another mistake!。
原代码存在的问题
- 输入读取错误:原代码通过循环多次读取输入,但实际n-1个丢失以外的数据是在同一行输入的,无需循环读取。
- 判断条件错误:原代码仅判断
x < b,但正确逻辑应检查计算出的丢失数据是否为正整数(即x - b > 0),因为每日损失必须是正整数。 - 输出逻辑错误:原代码在循环内重复打印结果,实际上只需要计算一次现有数据的总和,再输出一次结果即可。
原错误代码
n, x = map(int, input().split()) for i in range(n-1): a = list(map(int, input().split())) b = sum(a) c = x - b print(c) if x < b: print('Another mistake!')
修正后的代码
n, x = map(int, input().split()) # 处理n=1的情况:没有丢失数据,总损失就是当天的损失 if n > 1: existing_losses = list(map(int, input().split())) sum_existing = sum(existing_losses) else: sum_existing = 0 missing_loss = x - sum_existing if missing_loss > 0: print(missing_loss) else: print('Another mistake!')
测试用例验证
- 测试用例1
输入:
1 100000
输出:100000
- 测试用例2
输入:
2 10 2
输出:8
- 测试用例3
输入:
2 15 47
输出:Another mistake!
内容的提问来源于stack exchange,提问作者Roman228
相关产品推荐
相关产品推荐

