You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python for循环计算每层房租总和出错,请求排查代码问题

代码问题分析与修正

问题点拆解

  • 错误覆盖总楼层变量:原代码中floors=i完全破坏了外层循环逻辑——外层循环依赖初始输入的总楼层数确定遍历范围,这行代码把总楼层数替换成当前楼层号,会导致循环提前终止或逻辑混乱,直接删除即可。
  • 总租金初始化位置错误:total_rent=0放在公寓循环内部,每处理一个新公寓就重置总租金,之前累加的租金会被清空。应该把它移到每层循环的开头(获取该楼层公寓数量之后、公寓循环之前)。
  • 租金验证逻辑错误:原代码先把输入的租金加到总租金,再验证是否合法。如果第一次输入的是负数,错误值会被计入总和,后续重新输入的合法值又会被加一次,导致重复计算。正确逻辑是先验证输入合法性,确认合法后再累加。
  • 多余内层循环重复累加:最内层的for j in range(j-1): total_rent+=rent完全无意义,会把当前公寓的租金重复加多次,直接删除。

修正后的代码

# 先获取建筑物总楼层数
floors = int(input("Enter the number of floors in the building: "))

for i in range(1, floors + 1):
    total_rent = 0  # 每层开始时初始化总租金
    apt = int(input(f"How many apartments are there in floor #{i}?: "))
    
    for j in range(1, apt + 1):
        # 循环获取合法的租金输入
        while True:
            rent = int(input(f"What is the rent for apartment #{i}{j:02d}?: "))
            if rent >= 1:
                break
            print("The rent amount must be a positive integer")
        # 累加合法租金到总租金
        total_rent += rent
    
    print(f"Total rent for floor #{i} is ${total_rent}")

修正后逻辑说明

  1. 先获取总楼层数,作为外层循环的遍历基础;
  2. 处理每个楼层时,先初始化该楼层的总租金为0;
  3. 遍历该楼层的所有公寓,用while True循环确保用户输入的租金是正整数,直到输入合法才退出循环;
  4. 将合法租金累加到楼层总租金中;
  5. 处理完该楼层所有公寓后,输出总租金。

内容的提问来源于stack exchange,提问作者Illustrious_Illusion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 19:23:11