关于平方数的While循环问题:实现返回小于n的正平方数函数求助
代码逻辑问题排查
你的代码存在两个关键问题:
死循环问题
counter += 1被写在了while循环的外部,导致循环执行时counter的值永远是初始的1。只要n>1,counter * counter <n的条件就会一直成立,循环永远无法终止。
正确的做法是把counter +=1移动到while循环的内部,每次循环后让计数器自增,这样才能遍历到下一个需要计算平方的整数。类型注解规范问题(可选)
如果你的Python版本低于3.9,直接使用list[int]作为返回类型注解会报错,需要从typing模块导入List,写成-> List[int];Python3.9及以上版本两种写法都支持,但保持和题目要求的List[int]一致会更规范。
修复后的代码:
from typing import List # Python3.9及以上版本可省略该导入 def square(n: int) -> List[int]: counter = 1 output_list = [] while counter * counter < n: output_list.append(counter * counter) counter += 1 # 将计数器自增操作移入循环内部 return output_list
测试示例:调用square(10)会返回[1,4,9],符合返回所有小于n的正平方数并升序排列的要求。
内容的提问来源于stack exchange,提问作者kittbaee
相关产品推荐
相关产品推荐

