为何下述Python求平方根函数采用while True循环?如何解决无平方根输入时的无限循环问题
解决平方根函数无限循环问题
你的代码核心问题是while循环没有终止条件:当输入的n不是完全平方数时,i会一直递减到负数甚至负无穷,永远触发不了return i的分支,导致无限循环。以下是两种符合「while循环置于函数顶部」要求的修复方案:
方案1:添加i的下限终止条件
直接限制i的最小值,当i减到负数时终止循环,明确返回无结果的标识:
def square(x): return x * x def qrt(n): i = 100 while i >= 0: if square(i) != n: i -= 1 else: return i return None # 无整数平方根时返回None
方案2:提前判断终止时机(更高效)
利用i递减时平方值也递减的特性,当i的平方小于n时,直接终止循环(再往下减平方只会更小,不可能等于n):
def square(x): return x * x def qrt(n): i = 100 while True: current_sq = square(i) if current_sq == n: return i elif current_sq < n: break i -= 1 return None
两种方案都保留了while循环在函数顶部的要求,同时避免了无限循环:方案1逻辑简单直观,方案2减少不必要的循环次数,运行效率更高。
内容的提问来源于stack exchange,提问作者limee
相关产品推荐
相关产品推荐

