2016-07-09 5 views
0

ich eine Funktion habe:Ich habe eine Funktion aufzurufen, und meine Ausgabe

def divisible(num): 
    if num%9 == 0: 
     print("true") 
    else: 
     print("false") 

Durch die Nutzung dieser Funktion ich die Ausgabe von durch 9 teilbar Zahlen erhalten zwischen 1 und 100. Wie kann ich Das? Ich bin sehr neu bei Python, kann mir jemand helfen, dieses Problem zu lösen.

ab jetzt versuche ich, so zu nennen:

for i in range(10): 
     j = divisible(i) 
     if j == 'true': 
      print(i) 

Aber es ist nicht mir die genaue Ausgabe zu geben. Ich habe zu bekommen wie (9,18,36,45 etc)

+2

Sie müssen in der ersten Funktion wahr oder falsch zurück? – Psidom

+0

Funktion teilbar, Rückgabe wahr oder falsch.Ihre Schleife sollte mehr als 10 laufen – GAVD

+0

print ("wahr") bedeutet nicht Rückkehr True :) –

Antwort

1

Sie sollten statt Druck zurück.

def divisible(num): 
    if num%9 == 0: 
     return "true" 
    else: 
     return "false" 

for i in range(100): 
    j = divisible(i) 
    if j == 'true': 
     print(i) 
+0

Vielen Dank, Das beantwortet meine Frage –

1

Derzeit Drucktrue und false als Wert aus Ihrer Funktion. Sie müssen return ihnen.

def divisible(num): 
    if num % 9 == 0: 
     return 'true' 
    else: 
     return 'false 
3

Ihre divisible() Funktion nicht Rückkehr nichts. Das Schreiben von Ausgaben in Ihre Konsole (mit print()) ist nicht dasselbe wie das Zurückgeben eines Ergebnisses an den Aufrufer.

Da Ihre Funktion keinen Wert zurückgibt, setzt Python den Rückgabewert auf None. None == 'true' wird nie wahr sein, so dass Ihre Schleife nichts gedruckt wird.

Anstatt zu drucken, geben Sie einen booleschen Wert zurück; entweder True oder False:

def divisible(num): 
    if num%9 == 0: 
     return True 
    else: 
     return False 

oder sogar, da == erzeugt einen Booleschen Wert:

def divisible(num): 
    return num%9 == 0 

Sie noch Strings natürlich zurückkehren konnte, return 'true' oder return 'false', aber Python hat spezielle Objekte für dieses und ein Viele Python-Codes können direkt mit booleschen Werten arbeiten.

nun Ihre Funktion gibt etwas an den Aufrufer Sie testen können:

for i in range(10): 
    j = divisible(i) 
    if j: 
     print(i) 

Beachten Sie, dass j entweder True oder False Sie direkt, dass in einem if Test verwenden können.

0

Sie können auch die Liste der Zahlen durch filter erhalten:

lst = list(filter(lambda x: x%9, range(0,100))) 
print(set(range(100)) - set(lst) 
# {0, 99, 36, 72, 9, 45, 81, 18, 54, 90, 27, 63} 

final_list = list(set(range(100)) - set(lst)).sort() # to sort it 
+0

Ein kürzerer, mehr 'Pythonic' Weg ... '[Artikel für Artikel in Bereich (100) if (Artikel% 9 = = 0)] ' –

+0

Wissen Sie, dies ist kein Wettbewerb, um zu zeigen, wie Sie das Problem lösen würden. Ja, es gibt viele Möglichkeiten, wie Sie dies mit cleverem Python-Code tun können, aber dieser Beitrag behandelt die Frage überhaupt nicht *. –

+0

Nun OP sagte "Ich muss wie (9,18,36,45 usw.)", so würde meine Lösung ihm die Liste geben –

0

Verwendung:

print list(x for x in range(1,101) if not x%9) 

Welche Sie erhalten:

[9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 99] 
Verwandte Themen