在下面的代码(来自 udacity 类(class) CS-101)中,我尝试在与类(class)讲座中相同的行上创建一个巨大的索引。这里,make_big_index - size 的输入限制了列表 - 索引中的条目数量。 但是,每当我运行代码时,while 循环似乎无限运行,不会终止。终止条件 - len(index) < size,似乎每次都会通过,即使 len(index) > size。
我尝试了 pdb.settrace() 选项,并且逐步调试表明,即使输入大小 = 3,循环也会继续并且永远不会退出。
import pdb, sys
def add_to_index(index, keyword, url):
for entry in index:
if entry[0]== keyword:
entry[1].append(url)
return
index.append([keyword, [url]])
return
def make_string(p):
s=""
for e in p:
s=s+e
return s
def make_big_index(size):
index=[]
letters = ['a','a','a','a','a','a','a','a']
pdb.set_trace()
while len(index) < size:
word = make_string(letters)
add_to_index(index, word, 'fake')
print index
for i in range(len(letters)-1, 0, -1):
if letters[i] < 'z':
letters[i] = chr(ord(letters[i])+1)
break
else:
letters[i]='a'
## return index
def main():
size=raw_input('>size: ')
make_big_index(size)
if __name__ == '__main__':
main()
最佳答案
size
是一个字符串,因为您将其输入视为 -
size=raw_input('>size: ')
make_big_index(size)
在 Python 2.x 中,string
始终大于 int
(任何 int),因此这就是循环永远不会结束的原因。展示这一点的示例 -
>>> '1' > 9999999999999999999999999999999
True
在获取输入时将其转换为 int,示例 -
size=int(raw_input('>size: '))
make_big_index(size)
关于Python循环限制错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31760574/