Python基于while循环编写圆周长、面积计算表格程序及异常排查
原代码无输出的原因与调整实现方案
原代码核心错误清单
- 循环变量初始化错误:
i = float是将浮点类型本身赋值给变量,而非定义一个初始值为浮点型的可遍历变量,直接导致while条件永远无法成立 - 循环判断逻辑错误:
while i in range(1, radius+1)一是成员关系判断的写法不符合while循环需要布尔值条件的使用规则,二是range生成的整数序列无法覆盖0.5cm的增量要求 - 计算逻辑错位:代码全程使用固定的
radius=20的数值计算面积和周长,没有遍历不同半径的逻辑,哪怕循环触发,所有行的数值都是相同的 - 提前终止循环:循环内部写了
break语句,哪怕循环能触发,执行一次就会直接终止,无法遍历全部半径值 - 格式化规则不匹配:原f-string里用
{i:3d}的整数格式化规则处理后续的浮点型半径值,会直接触发格式报错
符合需求的调整后代码
调整逻辑完全匹配要求:使用while循环覆盖1cm-20cm(含两端)、步长0.5cm的所有半径值,计算对应周长与面积并输出对齐的表格。
import math def main(): # 半径从1cm起始 current_r = 1.0 # 打印对齐的表格表头 print(f"{'半径(cm)':<8}{'面积(cm²)':<12}{'周长(cm)':<12}") print("-" * 32) # 循环终止条件:半径不超过20cm(含端点) while current_r <= 20.0: # 计算当前半径对应的面积、周长 area = math.pi * current_r ** 2 circumference = 2 * math.pi * current_r # 格式化输出,保留指定小数位保证对齐 print(f"{current_r:<8.1f}{area:<12.2f}{circumference:<12.2f}") # 按0.5cm增量更新半径 current_r += 0.5 if __name__ == "__main__": main()
代码调整说明
- 用
current_r作为循环载体,初始值设为1.0,完全匹配0.5cm的步长计算要求 - while循环条件设置为
current_r <=20.0,刚好覆盖1cm到20cm的两端取值,不会遗漏端点 - 每次循环完成计算和打印后,给当前半径增加0.5cm,实现要求的增量规则
- 去掉原代码中提前终止循环的break语句,保证所有半径值都能被遍历计算
- 调整所有输出的格式化规则为浮点数模式,保证表格对齐,不会触发格式错误
内容的提问来源于stack exchange,提问作者Katie Grace
相关产品推荐
相关产品推荐

