Python中这段while循环代码存在什么问题?(示例:limit=40应输出36)
问题分析:Python循环无法正确计算小于limit的最大平方数
需求明确:当limit = 40时,需要得到小于40的最大平方数36(即6²),但当前代码完全达不到预期,问题出在这几个地方:
- 初始值与循环逻辑矛盾:
product初始设为0,nearest_square同步为0。第一次循环时product加1变为1,执行nearest_square **= product后结果还是0(0的1次方还是0),这会导致循环永远无法退出——nearest_square一直是0,始终满足nearest_square < limit的条件。 - 平方计算逻辑完全错误:代码里的
nearest_square **= product是对当前nearest_square做product次幂运算,而我们需要的是计算product的平方(即product * product或者product **2),这完全是两种不同的运算逻辑。
修正后的代码示例:
limit = 40 product = 0 nearest_square = 0 while (product + 1) ** 2 < limit: product += 1 nearest_square = product ** 2 print(nearest_square) # 输出36
或者用另一种更直观的循环写法:
limit = 40 product = 1 nearest_square = 0 while product **2 < limit: nearest_square = product **2 product +=1 print(nearest_square) # 输出36
内容的提问来源于stack exchange,提问作者hussein mo
相关产品推荐
相关产品推荐

