Ich möchte Zahlen von 1 bis 100 drucken, wobei die durch 3 und 5 teilbaren Zahlen übersprungen werden. Wenn ich den Code 1 verwende, erhalte ich nicht die richtige Ausgabe, sondern 1 bis 100
#CODE1
i=1
a=1
while i<=100:
if (a%3==0 and a%5==0) :
a=a+1
else:
print(a)
a=a+1
i=i+1
aber wenn ich den CODE-2 benutze, erhalte ich das gewünschte Ergebnis
#CODE2
i=1
a=1
while i<=100:
if ((a%3 and a%5)==0) :
a=a+1
else:
print(a)
a=a+1
i=i+1
Beachten Sie die vierte Zeile des Codes. Warum ist der erste Code falsch?
Bedenken Sie:
a = 10
(a%3 == 0) and (a%5 == 0) # False
(a%3 and a%5) == 0 # True
Der erste Versuch gibt False
falsch, weil beide Bedingungen erfüllt sein müssen; du brauchst or
stattdessen. Wenn Sie genau hinschauen, werden einige Zahlen (z. B. 15
) ausgeschlossen, die mit Zahlen übereinstimmen, die beide 3
und 5
als Faktoren haben.
Der zweite Versuch ist richtig , denn wenn a
nicht teilbar durch entweder 3 oder 5, der Ausdruck ergibt False
, und 0 == False
gibt True
. Idiomatischer wäre zu schreiben:
not (a%3 and a%5)
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen