2016-09-05 1 views
-2
b = 'abbaab' 
count = 0 
width = 2 
for k in range(0, len(b), width): 
    print b[k:k + width] 

mich machenWie Rückkehr tun das gleiche wie Druck in Python String

ab 
ba 
ab 

aber ich Rückkehr müssen anstelle von Druck gibt. Ich weiß nicht, wie ich jede Zeile in etwas speichern soll, die Dinge, die ich ausprobiert habe, besagten Index außerhalb der Reichweite.

+1

speichern sie die Liste in einer Liste und zurück:

In Ihrem Fall, vorausgesetzt, dass Sie diesen Code-Schnipsel als Funktion schreiben wollen und Rückgabewerte, die gedruckt werden, sollte es wie folgt durchgeführt werden . http://www.openbookproject.net/pybiblio/gasp/course/A-lists.html – Tempux

+0

'return' will eine Funktion. Sie sollten in Erwägung ziehen, eine Funktion zu schreiben, mit der Sie return verwenden können. –

+1

* die Dinge, die ich versuchte, sagte Index außerhalb der Reichweite *. Veröffentlichen Sie die Dinge, die Sie versucht haben, und den Fehler, den Sie haben –

Antwort

0

print und return sind sehr unterschiedlich.

Drucken ist eine Funktion, die nur etwas auf den Bildschirm ausdruckt. return ist ein Befehl, der im Grunde sagt, welchen Wert eine Funktion zurückgeben soll. Zum Beispiel:

def func1(): 
    print 1 

def func2() 
    return 2 

wenn Sie das tun

first_result = func1() 
second_result = func2() 

Sie werden sehen, dass

first_result = None 
second_result = 2 

aber wenn man sie laufen

func1() 
func2() 

Sie sehen, dass nur 1 wird auf dem Bildschirm gedruckt. Um die Rückkehr einer Funktion zu drucken, müssen Sie explizit für ihn mit dem im Verstand

print func2() 

fragen, und Überschrift zu Ihrem Problem, können Sie Ihre Sachen speichern und zurück, dass auf die Funktion, und nur dann fragen Sie nach Python, um alles auszudrucken

def func3(): 
    b = 'abbaab' 
    count = 0 
    width = 2 
    things = [] 
    for k in range(0, len(b), width): 
     things.append(b[k:k + width]) 
    return things 

print func3() 

Natürlich werden Sie in diesem csae alle Werte auf einmal drucken. Um jede Zeile einzeln, wiederholen Sie das Ergebnis zu drucken und jedes Element drucken

value_returned = func3() 
for element in value_returned: 
    print element 
1

Ich denke, das wird funktionieren, Lösung in Python 2.7.6:

def print_list(b): 
    count = 0 
    width = 2 
    for k in range(0, len(b), width): 
     yield b[k:k + width] 
b = 'abbaab' 
l = list(print_list(b)) 
for i in l: 
    print i 

Ausgang:

ab 
ba 
ab 

Hier verwende ich yield Anweisung anstelle von return, um die jede Zeile Element zurückgeben und versuchen, ein zu konvertieren ll in list und jedes Element in der Liste vertreten jede Zeile Oder ist es nicht notwendig, sie in list konvertieren Sie diese verwenden können:

def print_list(b): 
count = 0 
width = 2 
ans = [] 
for k in range(0, len(b), width): 
    ans.append(b[k:k + width]) 
return ans 

b = 'abbaab' 
for i in print_list(b): 
    print i 

:

for i in print_list(b): 
    print i 

Wenn Sie return dann Lösung verwenden möchten Hoffe das hilft.

+0

oder einfacher: 'für i in print_list (b):' Keine Notwendigkeit, einen Generator in eine Liste zu verwandeln –

+0

@ Joel Goldstick danke für den Rat .. Ich werde Änderungen vornehmen. Ich bin es gewohnt, alles in "Liste" zu verwandeln. –

0

Sie wollen return gleiche wie print sein, schaltet return Kontext callee-caller Funktion, mit einem gewissen Wert oder keine. Während print wird verwendet, um einige Ausgaben zu senden console

Sie beide können nicht gleich sein.

def foo(): 
    b = 'abbaab' 
    stack = [] 
    count = 0 
    width = 2 
    for k in range(0, len(b), width): 
     stack.append(b[k:k + width]); 
    return stack; 
Verwandte Themen