繁体   English   中英

我想排除所有不能被 7 整除且不是 (0,300) 范围内的 5 倍数的数字

[英]I want to exclude all numbers that aren't divisible by 7 and that are not multiples of 5 in a range of numbers from (0,300)

基本上我必须得到一个可以被 7 整除但不能被 5 的倍数整除的数字列表。但是由于某种原因,当我设置条件时,它告诉我我有错误。

for i in [x for x in xrange(0,100) if x%7 ==0 and if x%5 !=0 ]:
    print i

我知道你按照列表理解的方式发布了一些东西,但它有点难以阅读。 所以有几件事...

  1. 在将其压缩为列表理解之前,我会尝试将其编写为多行 for 循环。
  2. 我不确定为什么你在这里有一个 'x',而 'xrange' 没有意义。 编辑:刚刚意识到为什么我不认识 xrange 是因为我从未使用过 Python 2.x

因此,考虑到这一点,您基本上是在寻找 0-300 之间可以被 7 整除但不是 5 的倍数的任何数字。

意味着我们有一些事情......

  • range(0,301):由于范围不包括我们想要的最后一个值,我们想要 n+1
  • 我们的数字,假设“i”既是……“i%7==0”又是“i%5!=0”

所以让我们一行一行地看

for i in range(0,301):

好的,现在您不需要像示例中那样的嵌套 for 循环列表理解。 现在,您需要知道“如果” i 是____...所以我们需要一个 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)

将它们全部存储在一个列表中,以便您可以随时访问它们。 或者您当然可以在不分配的情况下打印它。

编辑:标题和你在正文中所说的有点矛盾。 阅读完我自己的答案后,我不完全确定这是否是您要查找的内容,但这就是我遇到的情况。 希望能帮助到你!

您的列表理解不正确。 它应该类似于:

[x for x in xrange(100) if x%5 and not x%7]

更好(更有效)将类似于

[x for x in xrange (7, 100, 7) if x%5]

更好的是......不,我们现在就到此为止。

暂无
暂无

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

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