2017-02-20 31 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!") 

Hey!Python:与えられた2つの整数で割り切れる

私は一般的なプログラミングには慣れていません。解決策を探してみましたが、解決策を見つけることができませんでした。

私は1から6までの偶数と奇数を見つけようとしていました。整数6を除いて、すべてうまくいきました。整数6は2と3で割り切れることを印刷する必要があります。エラー?

+1

問題は 'if'条件文の順序付けで、2番目と3番目の' elif'文を入れ替えます – ZdaR

答えて

2

あなたはy %2 == 0の代わりにy %3==0 and y %2 ==0が評価されている6のためのように、2と3で割り切れるためのテストは、最初に来る必要があります。

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つの条件が失敗した場合)、残りのブランチをチェックします。

+1

@FaisalBuzuobar:モーゼスが最初だったので、彼が受け入れられた答えを得たらそれは正しいだろうと思う:) –

+2

いつもいい説明、いつも:) –

+0

私はここにいるみんな。どのようにしてモーゼスは正解を得ることができますか? –

関連する問題