2017-02-20 12 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: Teilbar durch zwei gegebene Ganzzahlen

Ich bin neu in der Programmierung im Allgemeinen und ich fange an, den Dreh raus zu bekommen. Ich habe versucht nach Lösungen zu suchen, konnte aber keine finden.

Ich habe versucht, die geraden und ungeraden Zahlen zwischen 1 bis 6 zu finden. Alles funktioniert gut außer der ganzen Zahl 6, wo ich es ausdrucken muss, dass die ganze Zahl 6 durch 2 und 3 teilbar ist. Wie kann ich beheben der Fehler?

+1

Das Problem ist mit der Bestellung von 'if' conditionals, tauschen Sie Ihre zweite und dritte' elif' Anweisungen – ZdaR

Antwort

2

Der Test für teilbar durch 2 und 3 sollte an erster Stelle stehen, so dass für 6 Sie y %3==0 and y %2 ==0 statt y %2 == 0 ausgewertet hat:

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

Warum sollte es zuerst kommen? Ich meine die durch 2 und 3 teilbar? –

+0

So wird es zuerst ausgewertet und Sie erhalten die relevante Nachricht gedruckt für 6, sonst wird die Verzweigung für% 2 der ausgeführte Zweig und die anderen werden übersprungen. –

3

Es gibt zwei Probleme: Zunächst einmal sollte der Zustand sein:

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

Da es zwei getrennte Bedingungen. Als nächstes müssen Sie, dass der Check nach oben bewegen, so:

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!")

Warum? Denn wenn eine Nummer durch 2 und 3 teilbar ist, ist sie auch durch 2 teilbar. Das heißt in Ihrem Fall hätte es den ersten Zweig gewählt. Durch den Tausch der Bestellung wird zunächst geprüft, ob es durch 2 und 3 teilbar ist. Wenn das nicht der Fall ist - das heißt, wenn mindestens eine Bedingung fehlschlägt - überprüft es die verbleibenden Zweige.

+1

@FaisalBuzuobar: Moses war zuerst, also ich denke, es wäre richtig, wenn er die akzeptierte Antwort bekommt :) –

+2

Schöne Erklärungen, jedes Mal :) –

+0

Ich bin neu hier Jungs. Wie kann ich Moses dazu bringen, die richtige Antwort zu bekommen? –

Verwandte Themen