Python循环限制错误

标签 python

在下面的代码(来自 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/

相关文章:

python - Altair 分层图表 : How to sum over charts?

python - 如何在执行时创建Python方法?

python - 从文件创建列表字典

python - 如何从 OpenERP 中删除日期异常?

python - Flask 中间件中止 401 导致 500

javascript - 编剧自动滚动到无限滚动页面底部

python - 线性回归的预处理文本是否有正确的步骤?

python - 合并字典中的数据框

python - 如何使用模拟 yield 计算一系列股票价格?

c++ - 使用 OpenCV 从图像中检测最大矩形