2017-02-20 548 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

我在这里新来的家伙。我怎样才能让摩西得到正确的答案? –