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 loop
中 i
的值。
在 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))
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 loop
中 i
的值。
在 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))