Python新手求助:生成1-5长宽高所有组合的体积表格
解决思路与代码实现
要生成1到5所有长、宽、高组合的长方体体积表格,核心是要遍历所有可能的三维组合(笛卡尔积),你之前的方法没找对遍历组合的方式,下面是具体解决方案:
为什么你的两种方法不行
- 直接用
range相乘:range是可迭代对象,不支持乘法运算,自然触发TypeError,这不是遍历组合的正确方式。 - 使用
zip:zip只会把多个可迭代对象的对应位置元素配对,只能得到(1,1,1)、(2,2,2)...这类同位置组合,无法覆盖所有5×5×5=125种可能。
正确实现方法
方法1:嵌套循环(新手友好,直观易懂)
通过三层嵌套for循环,依次遍历长、宽、高的所有取值,计算每个组合的体积并打印表格:
# 定义长、宽、高的取值范围(1到5,range左闭右开所以写1到6) dim_range = range(1, 6) # 打印表格表头与分隔线 print("长 | 宽 | 高 | 体积") print("-" * 20) # 三层循环遍历所有组合 for length in dim_range: for width in dim_range: for height in dim_range: volume = length * width * height # 格式化输出,确保列对齐 print(f"{length:2d} | {width:2d} | {height:2d} | {volume:3d}")
方法2:使用itertools.product(简洁高效)
Python标准库itertools里的product函数专门用来生成笛卡尔积,能一次性输出所有组合,代码更简洁:
import itertools dim_range = range(1, 6) print("长 | 宽 | 高 | 体积") print("-" * 20) # 生成所有三维组合,repeat=3表示对同一个范围取3次组合 for length, width, height in itertools.product(dim_range, repeat=3): volume = length * width * height print(f"{length:2d} | {width:2d} | {height:2d} | {volume:3d}")
说明
range(1,6):因为Python的range是左闭右开区间,要包含5必须把结束值设为6。- 格式化字符串
{:2d}、{:3d}:确保每个列的内容对齐,让表格更美观。
内容的提问来源于stack exchange,提问作者ForeverLost20
相关产品推荐
相关产品推荐

