python 中的 while 循环代码有什么问题?

What is wrong with this while loop code in python?

def nearest_square(limit):
key=0
while key<=limit:
    i=0
    key=i*i
    i+=1
return key

测试 1 = nearest_square(40) 打印("expected result: 36, actual result: {}".格式(测试1)) 这个循环会无限期 运行 吗?

这是因为你在while循环里面启动你的i,把i移到外面,就可以了。

你的密钥将等于 0,因为当你分配密钥的值时变量 i 将始终为 0(我试图增加,但初始化保持将 i 更改为 0):

loop 1:
initiate i = 0
key = 0*0 = 0
i = 1

loop 2
initiate i = 0
key = 0*0 = 0
i = 1

loop 3:
initiate i = 0
key = 0*0 = 0
i = 1

loop 4:
initiate i = 0
key = 0*0 = 0
i = 1

loop 5:
initiate i = 0
key = 0*0 = 0
i = 1

loop 6:
initiate i = 0
key = 0*0 = 0
i = 1

并且会一直循环(会导致死循环) 顺便说一句,尝试在您的代码中留出一些空格,这将极大地帮助您编写更复杂的代码。

我假设你有正确的缩进。

您不需要定义 'key'。在 Python 中,您的变量将在您初始化它们时定义。

然后,在整个循环中,您一直看到 i 为零。这需要在整个循环之前完成。

你已经在 while 中定义了 i 所以在每次迭代中它将 defined.define i 在 while 循环之外像这样

i=0
while key<=limit:
    key=i*i
    i+=1
return key

我希望你在 while 循环中使用它之前已经初始化了密钥。

阿维纳什,
这段代码有几处错误:
1.缩进 - 您的代码需要在函数内缩进
2.设置变量 - 您已经创建了变量键但没有为其分配任何值,您需要将其声明为您将要使用的类型,在本例中为整数。
3.Logic - 在循环中,您将 i 变量设置为 0,因此 k = i*i 的第一阶段什么都不做...以 1(或其他数字)开始 i 并且把它放在循环外

您的代码应该更像这样:

def nearest_square(limit):
    key = 0
    i=1
    while key<=limit:
        key=i*i
        i+=1
    return key

代码:

def nearest_square(limit):
    max_val = -1
    for val in xrange(1, limit):
        cur_power = val*val
        if max_val < cur_power and cur_power < limit:
            max_val = cur_power
        if cur_power > limit:
            break
    return max_val

test1 = nearest_square(40)
print("expected result: 36, actual result: {}".format(test1))

输出:

expected result: 36, actual result: 36

您的代码没有增加 while loopi 的值。

在 while 循环之前初始化 i=0。工作示例:

def nearest_square(limit):
key=0
i=0
while key<=limit:
    key=i*i
    i+=1
return key

test1 = nearest_square(limit = 40) print("expected result: 36, actual result: {}".format(test1))