1
def common(num): 
    #returns true if num is divisible by all the 'i' integers 

    if all(num%divisor==0 for divisor in (1,10)): 
     return True 
    else: 
     return False 

print(common(2520)) --> True 
print(common(10)) --> True 
print(common(17)) --> False 

Hallo all, diese Funktion soll zeigen, ob 'num' ein gemeinsames Vielfaches aller 'i' Zahlen ist. Ich kann nicht herausfinden, warum 10 True zurückgibt? Bedeutet "all()" nicht, dass jeder Test wahr sein muss, damit das Ganze wahr ist? Verwende ich es falsch? Irgendwelche besseren Funktionen, die ich verwenden sollte? Danke für alle Einsichten.Mehrere boolesche Tests in IF-Anweisung mit 'all()' Funktion

-WT

+1

Die einzigen Werte gebunden 'divisor' sind 1 und 10 nur diejenigen, zwei. Es ist unklar, was Sie vorhaben zu tun. Vielleicht wollten Sie z. B. 'Bereich (1, 10)'? Kann nicht erraten. –

+0

Oder vielleicht 'Bereich (1, 11)' – chapelo

+1

Nur FYI, wenn Sie sich tun, wenn Bedingung: zurück True; else: return False ', du kannst tatsächlich nur' return condition' machen. (In einigen Situationen konvertiert Python Dinge in boolesche Werte für eine 'if' Anweisung. Wenn Sie also superfleißig sein wollen, geben Sie' bool (condition) 'zurück.) – detly

Antwort

3

Die Art und Weise, sich zu finden:

num=10 
for divisor in (1,10): 
    print(divisor, num%divisor , num%divisor==0) 

1 0 True 
10 0 True 

gibt und macht Sie verstehen, dass (1,10) ein Tupel, während Sie sicherlich range(1,10) wollte.

Beachten Sie, dass die Funktion common() hat die gleichen Rückgabewerte wie

all(num%divisor==0 for divisor in range(1,10)) 

dann können Sie es als definieren:

def common(num): 
    return all(num%divisor==0 for divisor in range(1,10)) 
+1

@John OK. Ich habe gerade Ihre am meisten uplooted Antwort als Danksagung – eyquem

+0

Vielen Dank John! Ich bin neu in der Programmierung/Python, also wusste ich nicht, was ein Tupel war. Und ich verstehe, was Sie damit meinen, die if-Anweisung zu ignorieren. Du schaukelst! – watchTower