2016-04-09 12 views
-1

Ich bin ein newb in Python und habe eine Frage, die ich (einen Tag und die Hälfte) .Die ersten Teil der Frage geht dahin, lösen kippe:Ausgabe von Funktion 1 als Eingabe in Funktion 2

Erstellen Ihnen eine Funktion ein mit for-Schleife, die den Benutzer fragt, wie viele Elemente und die Elemente eingeben. Die Funktion sollte es in einer Liste drucken. dies funktioniert

Der zweite Teil der Frage ist ratlos. Es fragt: Schreiben Sie eine andere Funktion, die die Liste, die Sie eingebaut haben (a), als Eingabe verwendet und die Länge
jedes Strings in der Liste ausgibt. Drucken Sie abschließend die Gesamtlänge aller Strings. Sie müssen eine For-Schleife in
Ihr Programm verwenden.

Ich habe dies versucht, aber es druckt die Ausgabe sechsmal heraus ..

def gym(gymbag): 
    y=int(input("How many items in your gym bag?")) 
    gymbag=[] 
    for x in range(y): 
     f=input("Enter an item") 
     gymbag.append(f) 
    print(gymbag) 

def gyms(gymbag): 
    for i in range(len(gymbag)): 
     len(gymbag) 
     print(gymbag) 
gym('gymbag') 
gyms('gymbag') 

Pls Hilfe!

Antwort

1

Ihre erste Funktion sollte einen Ausgang haben, der mit return angegeben werden kann. Sie sollten diese Ausgabe der ersten Funktion als Eingabe für die zweite Funktion verwenden. Jetzt haben Sie eine Zeichenfolge als Argument für Ihre Funktionen übergeben. Außerdem haben Sie die Punkte der Liste nicht durchlaufen. So etwas sollte für Sie arbeiten:

def gym(): 
    y=int(input("How many items in your gym bag?")) 
    gymbag=[] 
    for x in range(y): 
     f=input("Enter an item") 
     gymbag.append(f) 
    print(gymbag) 
    return gymbag 

def gyms(gymbag): 
    total_length = 0 
    for item in gymbag: 
     print(len(item)) # LENGTH OF ITEM 
     total_length += len(item) 
    print(total_length) # LENGHT OF ALL ITEMS COMBINED IN GYMBAG 

gymbag = gym() 
gyms(gymbag) 
+0

Danke Justen, also sollte ich einen boolean (total_length + = ..) verwenden, um die Länge jedes Elements berechnen zu lassen? – Sammy

+0

Ein boolescher Wert ist nur Wahr oder Falsch. Es hat nichts mit diesem Code zu tun. Die total_length ist eine ganze Zahl (Zahl). Was die Funktion macht, ist jedes Element in Gymbag zu durchlaufen und die Länge des Elements mit len ​​(item) zu berechnen. Das + = ist ein Zuweisungsoperator. Es besagt, dass total_length total_length plus die Länge des new_item ist, was effektiv total_length mit der Item Length erhöht. Auf diese Weise erhält man für jedes Item im Gymbag die Gesamtlänge aller Strings in total_length –

0

Sie den Grundgedanken dieser Übung fehlt, die einen Wert aus der ersten Funktion zurückzukehren. Das Drucken eines Wertes ist nicht dasselbe wie das Zurückgeben.

Zuerst sollten Sie die Liste gymbag von der gym Funktion zurückgeben. Tun Sie dies, indem Sie nach der print-Anweisung die Zeile
return gymbag hinzufügen.

Dann haben Sie ein Problem mit der Implementierung und der Verwendung der gyms Funktion. Um über eine Liste zu iterieren und die Länge jedes Strings darin zu drucken, sollten Sie direkt über die Elemente und nicht über die Anzahl der Elemente iterieren (Sie könnten es so machen, aber Sie sollten nicht die meisten Male):

for item in list_of_strings: 
    print(len(item)) 

Das Problem bei der Nutzung ist, dass man es mit einer Schnur und nicht eine Liste von Strings genannt, und es hat auch nichts mit dem Ausgang der gymbag Funktion zu tun.

können Sie entweder tun es direkt, gyms(gymbag()) oder in 2 Schritten:

stuff = gym() 
gymbag(stuff) 

Und schließlich Funktionsnamen sind wichtig. Versuchen Sie, jeder Funktion einen möglichst aussagekräftigen Namen zu geben (innerhalb angemessener Länge).

0

Es ist gut, dass Sie python3 gewählt haben und ich ermutige Sie, weiter zu üben, um es noch besser zu lernen.

Leider ist alles über Ihren Code falsch. Erstens hat die gym Funktion einen Eingang, der nie benutzt wird! Sie dürfen ein Argument niemals bearbeiten, bevor Sie es verwendet haben. Andere Fehler sind wirklich trivial und wie die, die ich erwähnte. Zum Beispiel ist die gymbag Liste in der gym Funktion lokal, aber Sie beabsichtigen, es wie eine globale Variable zu verwenden. Sie können das in Ordnung tun (siehe here), aber ich empfehle, dass Sie den Ansatz verwenden, den @Justen gewählt hat.Das ist im Allgemeinen viel effizienter und sauberer.

Verwandte Themen