按字典中的值划分(Python)

时间:2014-01-02 16:03:17

标签: python loops dictionary

我正在构建一个素数生成器(我知道,另一个,可能不是一个非常好的生成器,但这是另一个问题。)我使用字典为我的素数集合而忽略复合材料除以以前的素数。然而,它似乎在函数的最后阶段没有正确迭代,我得到了许多不正确的结果。 isWhole是对另一个函数的自解释调用。这是我的代码,其中x =要生成的素数:

def prime_generator(x):
    count = 2
    counter = 2

    p = {1: 2}
    while len(p) <= x:
        if count % 2 == 0:
            count += 1
            continue

        test1 = (math.sqrt(count))

        if isWhole(test1) == True:
            count += 1
            continue

        for k, a in p.items():
            if count % a == 0:
                break
            else:
                p[ counter ] = count
                counter += 1
                break

        count += 1

    return p

1 个答案:

答案 0 :(得分:2)

您的设计意图并不完全清楚,但您可能打算将else子句应用于for循环而不是if语句。尝试取消缩进整个else子句,以便只有在循环终止而没有点击break时才会运行。