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)) 这个循环会无限期地运行吗?
答案 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))