繁体   English   中英

如何在Python集合中传递KeyError 2?

[英]How can I pass a KeyError 2 in a set in Python?

我想删除键错误2,该错误指出Set中不存在该元素。 我已经尝试过使用set(None),我尝试过使用excep KeyError:pass ...这些工作都没有。 任何想法?

def p6():
    myPossiblePrimes= set()
    myDividersList= set()


    for x in range(2,15):
        for y in range(2,10):
            if (x%y != 0):

                myPossiblePrimes.add(x)
                myDividersList.add(y)
            else :
                myPossiblePrimes.remove(x)
                print (x, 'does equally divide with', y, ' and I removed it from the list')

    return[print('These are my possible primes:',list(enumerate(myPossiblePrimes)), 'and these are my dividers', list(enumerate(myDividersList)))]

这是一些回报,这就是为什么我添加了其他从“可能素数”中删除它的原因:

8等于2除法,我没有做任何检查9没有等于2除法,我把9加到了可能的集合9等于3除法,我没有做任何检查10等于2除法,我做了不做任何检查

错误:

文件p6 myPossiblePrimes.remove(x)KeyError中的文件“ C:\\ Python33 \\ assignment 2.1.py”,行165 KeyError:2

您可以在删除之前检查密钥:

 if (x%y != 0): 
       myPossiblePrimes.add(x)
       myDividersList.add(y)
 elif x in myPossiblePrimes:
       myPossiblePrimes.remove(x)

但是,您过于贪婪而无法将数字添加到素数列表的逻辑存在问题。 尝试这样的事情:

 for x in range(2,15):
    for y in range(2,10):
        if x%y == 0 and x != y:
            myDividersList.add(y)
            break
    else: # the part below is executed if for loop ended without a break
        myPossiblePrimes.add(x)

为了减少您的代码来解决这个问题:

if (x%y != 0):
    myPossiblePrimes.add(x)
else :
    myPossiblePrimes.remove(x)

如果尚未添加,如何删除?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM