这个while循环代码在python中有什么问题?

时间:2017-12-27 09:36:34

标签: python loops while-loop infinite-loop

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

test1 = nearest_square(40) print(“预期结果:36,实际结果:{}”。format(test1)) 这个循环会无限期地运行吗?

6 个答案:

答案 0 :(得分:2)

这是因为你在循环中启动你的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

它将继续循环(这将导致无限循环) 顺便说一句,尝试在代码中添加一些空格,它将为您提供更复杂的代码。

答案 1 :(得分:0)

我认为你有缩进权。

您无需定义“密钥”。在Python中,您的变量将在初始化时定义。

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

答案 2 :(得分:0)

你已经在里面定义了i,所以在每次迭代中它都会被定义。定义在while循环之外,就像这样

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

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

答案 3 :(得分:0)

阿维纳什,
这段代码有几个错误:
1. 缩进 - 您的代码需要在函数中缩进 2. 设置变量 - 您已经创建了变量键但没有为其分配任何值,您需要将其声明为您要使用它的类型,在本例中为整数。
3. 逻辑 - 在循环中你将i变量设置为0,所以k = i * i的第一阶段没有做任何事情......将我作为1(或其他nubmer)开始并将其放在外面循环

你的代码应该更像这样:

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

答案 4 :(得分:0)

<强>码

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

答案 5 :(得分:0)

您的代码未在i内增加while loop的值。

在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))