2016-09-27 2 views
-1

Ich bin brandneu zu Python und habe eine Zuweisung zu "Verwenden Sie zwei verschachtelte For-Schleifen. Zählen Sie in der äußeren for-Schleife von 0 bis 9 und dann bei jedem Schritt Countdown bis auf Null."Python zählt in verschachtelten Forloops

Die Antwort soll dies sein:

i= 0 
k= 0 
i= 1 
k= 1 
k= 0 
i= 2 
k= 2 
k= 1 
k= 0 
i= 3 
k= 3 
k= 2 
k= 1 
k= 0 
i= 4 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
i= 5 
k= 5 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
i= 6 
k= 6 
k= 5 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
i= 7 
k= 7 
k= 6 
k= 5 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
i= 8 
k= 8 
k= 7 
k= 6 
k= 5 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
i= 9 
k= 9 
k= 8 
k= 7 
k= 6 
k= 5 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 

Also jedes Mal, die ich oben zählt, k zählt von dem vorherigen Wert von i beginnen. Ich glaube, ich verstehe das allgemeine Konzept von verschachtelten Forloops, aber ich bin mir nicht sicher, ob mein Problem darin liegt, den Bereich für k zu identifizieren oder i und/oder k zu drucken. Folgendes habe ich:

for i in range(0,10): 
for k in range(i+1): 
    print 'i=',i,'' 
    print 'k=',k,'' 

Aber es gibt mir nicht, was ich brauche. Es scheint, als ob k hochgeht, wenn ich es betreibe, wahrscheinlich wegen der (i + 1), aber es ist die engste Antwort, die ich bis jetzt bekommen habe, und ich hatte ziemlich viel Ärger. Ich suche nicht nach der Antwort selbst, aber wenn mir jemand in die richtige Richtung zeigen könnte, wäre das sehr hilfreich. Vielen Dank!

+0

prüfen doc für 'range' –

Antwort

0

Sie brauchen nur Ihre zweite for-Schleife, um rückwärts statt vorwärts zu gehen. Jetzt geht es von 0 zu i.

Die Syntax hierfür lautet:

for k in range(i, -1, -1): 

Diese k bei i beginnt, bis k nicht -1 ist, die Anwendung von -1 bis es in jeder Iteration.

Also Ihr komplettes Programm wäre:

for i in range(0,10): 
    print 'i=',i,'' 
    for k in range(i, -1, -1): 
     print 'k=',k,'' 

Ausgang:

i= 0 
k= 0 
i= 1 
k= 1 
k= 0 
i= 2 
k= 2 
k= 1 
k= 0 
i= 3 
k= 3 
k= 2 
k= 1 
k= 0 
i= 4 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
i= 5 
k= 5 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
i= 6 
k= 6 
k= 5 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
i= 7 
k= 7 
k= 6 
k= 5 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
i= 8 
k= 8 
k= 7 
k= 6 
k= 5 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
i= 9 
k= 9 
k= 8 
k= 7 
k= 6 
k= 5 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
+0

Vielen Dank für Ihre Antwort. Das macht mehr Sinn und ist definitiv näher an dem, was ich brauche, aber es ist immer noch nicht genau das Gleiche. In meinem Beitrag zählt k jedes Mal, wenn ich hochziehe, den ganzen Weg bis auf Null herunter, also gibt es mehrere k in einer Reihe und nicht jede andere Zeile, die k ist. Bedeutet das, dass der Bereich für k immer noch ein Problem ist oder fehlt mir etwas anderes, das ich einbeziehen muss? Vielen Dank! – an223

+0

@ an223 Meine Antwort soll in Ihr Programm aufgenommen werden und Ihre zweite for-Schleife ersetzen. Ich habe die Antwort aktualisiert, um Ihnen ein komplettes Programm zu zeigen, das das macht, was Sie wollen. – gowrath

+0

@ an223 Jetzt prüfen. – gowrath

Verwandte Themen