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}")
修正后逻辑说明
- 先获取总楼层数,作为外层循环的遍历基础;
- 处理每个楼层时,先初始化该楼层的总租金为0;
- 遍历该楼层的所有公寓,用
while True循环确保用户输入的租金是正整数,直到输入合法才退出循环; - 将合法租金累加到楼层总租金中;
- 处理完该楼层所有公寓后,输出总租金。
内容的提问来源于stack exchange,提问作者Illustrious_Illusion
相关产品推荐
相关产品推荐

