基本上,我必须得到一个可被7整除而不是5的倍数的数字列表,但是由于某些原因,当我输入条件时它告诉我我有错误。
for i in [x for x in xrange(0,100) if x%7 ==0 and if x%5 !=0 ]:
print i
答案 0 :(得分:1)
我知道您按照列表理解的原则发布了一些内容,但是很难阅读。有几件事...
因此,仔细考虑一下,您基本上是在寻找0到300之间可以被7整除但不能是5的倍数的任何数字。
意味着我们有几件事...
所以让我们逐行看
for i in range(0,301):
好吧,现在您不需要像示例中那样的嵌套的for循环列表理解。现在,您需要知道“如果”我是____...所以我们需要一个if语句。
if i%7==0 and i%5!=0:
看到逻辑了吗?当然,如果if语句在我们的for循环内,则可以循环遍历我们范围内的所有值。
最后,如果我们的“ i”符合我们的标准,那么我们可以打印所有值。
print(i)
所以,我们的最终代码看起来像...
for i in range(0,301):
if (i % 7 == 0) and (i % 5 != 0):
print(i)
当然,有很多方法可以使它更优雅,但这是一般性的想法。
列表理解:
party = [i for i in range(0,301) if i%7==0 and i%5!=0]
print(party)
将它们全部存储在列表中,以便您可以随时访问它们。或者,您也可以不用分配就打印它。
编辑:标题和您在正文中所说的有点矛盾。看完我自己的答案后,我不确定是不是您要找的东西,但这就是我的想法。希望对您有帮助!
答案 1 :(得分:0)
您的列表理解不正确。它应该类似于:
[x for x in xrange(100) if x%5 and not x%7]
更好(更有效)的情况将类似于
[x for x in xrange (7, 100, 7) if x%5]
更好的是……不,我们现在就停在这里。