2017-02-20 292 views
1
x=[1,2,3,4,5,6] 

for y in x: 
    if y %2 == 0: 
     print (y) 
    elif y %3 == 0: 
     print ("y") 
    elif y %3 and y %2 ==0: 
     print ("Divisible by 2 and 3!") 
    else: 
     print ("Odd number!") 

嘿!Python:可被兩個給定整數整除

我是一般的編程新手,我已經開始掌握它了。試圖尋找解決方案,但找不到一個。

我試圖找出1到6之間的偶數和奇數。除了整數6,我需要它來打印出整數6可以被2和3整除的整數6。錯誤?

+1

問題在於if語句的順序排列,第二個和第三個elif語句交換 – ZdaR

回答

2

2和3的測試整除應該是第一位的,所以對於6,你有y %3==0 and y %2 ==0評估,而不是y %2 == 0

for y in x: 
    if y % 3 == 0 and y % 2 == 0: 
     print ("Divisible by 2 and 3!") 
    elif y % 2 == 0: 
     print (y) 
    elif y % 3 == 0: 
     print (y) 
    else: 
     print ("Odd number!") 
+0

爲什麼它應該優先?我的意思是2和3可以整除? –

+0

因此,它首先得到評估,並獲得打印爲6的相關消息,否則,%2的分支將執行分支,其他跳過。 –

3

這裏有兩個問題:首先,條件應該是:

elif y %3 == 0 and y %2 ==0:

由於有兩個單獨條件。接下來,你需要到檢查移動到頂部,所以:

for y in x: 
    if y %3 == 0 and y %2 ==0: 
    print ("Divisible by 2 and 3!") 
    elif y %2 == 0: 
     print (y) 
    elif y %3 == 0: 
     print ("y") 
    else: 
     print ("Odd number!")

爲什麼?因爲如果一個數字可以被2和3分割,它也可以被2除。所以這意味着在你的案例它會選擇第一個分支。通過交換訂單,它將首先檢查它是否可以被23分割。如果不是這種情況 - 即至少有一個條件失敗 - 它將檢查剩餘的分支。

+1

@FaisalBuzuobar:摩西是第一個,所以我認爲這將是正確的,如果他得到接受的答案:) –

+2

尼斯的解釋,每次:) –

+0

我在這裏新來的傢伙。我怎樣才能讓摩西得到正確的答案? –

相關問題