Python最小支出计算异常:代码返回最小值为0的问题排查
问题分析与修复
你的代码里最小支出始终返回0的问题,核心出在**minexp的初始化逻辑**和小细节错误上:
- 代码里
minexp=0`多了个反引号,属于语法错误,得先去掉。 - 关键问题:你把
minexp初始设为0,但如果输入的所有支出都是正数,exp < minexp(也就是exp < 0)的条件永远不会触发,minexp就一直保持0不变。 - 额外问题:当前代码会把用来结束输入的0也加到总支出里,这不符合实际需求。
修复方案
方案一:用无穷大初始化minexp
把minexp初始设为无穷大float('inf'),这样第一次输入的有效支出(非0)一定会小于这个值,自动成为初始最小支出,后续再逐一比较更新:
exp = -1 total = 0 maxexp = 0 minexp = float('inf') # 初始设为无穷大,确保第一次有效支出能覆盖它 while exp != 0: exp = int(input("enter your expenditure: ")) if exp == 0: break # 输入0时直接结束,不加入总支出 total += exp # 补上你之前定义但没用到的最大支出更新逻辑 if exp > maxexp: maxexp = exp # 更新最小支出 if exp < minexp: minexp = exp print("Total expenditure is: " + str(total)) print("your minimum expenditure is: " + str(minexp)) print("your maximum expenditure is: " + str(maxexp))
方案二:第一次输入后初始化minexp
如果不想用无穷大,可以在第一次输入有效支出后再设置minexp的初始值:
total = 0 maxexp = 0 minexp = None # 先设为None,标记未初始化状态 while True: exp = int(input("enter your expenditure: ")) if exp == 0: break total += exp # 第一次输入时初始化最大、最小支出 if minexp is None: minexp = exp maxexp = exp else: if exp > maxexp: maxexp = exp if exp < minexp: minexp = exp print("Total expenditure is: " + str(total)) print("your minimum expenditure is: " + str(minexp)) print("your maximum expenditure is: " + str(maxexp))
额外说明
两种方案都解决了0被计入总支出的问题,输入0直接结束循环,不参与计算;同时补上了你之前定义但未使用的maxexp更新逻辑,让最大支出功能正常生效。
内容的提问来源于stack exchange,提问作者Sarun Saji
相关产品推荐
相关产品推荐

