簡體   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