2016-05-17 12 views
0

Ich versuche, eine Schleifenfunktion zu schreiben, die den Benutzer auffordert, einen Schlüssel von der ersten Funktion einzugeben, und wenn es ein Schlüssel ist, dann druckt es seinen Wert. Wenn das eingegebene Wort nicht im Wörterbuch vorhanden ist, wird "Kein Eintrag" zurückgegeben.Drucken eines Wörterbuchwerts einer Funktion in einer anderen Funktion

Was ich bisher habe.

def read_ticker(): 
    c = {} 
    with open('tickers.csv') as f: 
     for line in f: 
      items = [item.strip('"').strip() for item in line.split(",")] 
      c[items[0]] = items[1:] 

    print(c) 

read_ticker() 

d = read_ticker() 

def ticker(): 

    x = input('Ticker: ') 
    if x in d: 
     return x[c] 
    else: 
     return 'No entry' 
ticker() 

Wie kann ich den Wert des in der zweiten Funktion eingegebenen Schlüssels zurückgeben?

Antwort

0

Ihre read_ticker() Funktion sollte c zurück:

def read_ticker(): 
    c = {} 
    with open('tickers.csv') as f: 
     for line in f: 
      items = [item.strip('"').strip() for item in line.split(",")] 
      c[items[0]] = items[1:] 

    print(c) 
    return c 

und dann können Sie Ihre Ticker-Funktion wie folgt ändern:

def ticker(): 
    x = input('Ticker: ') 
    if x in d.keys(): 
     return d[x] 
    else: 
     return 'No entry' 
+0

Das ist, was ich suchte! Noch eine Frage, wie würde ich es bekommen, die Eingabe zu wiederholen? –

+0

Setzen Sie es in eine for oder while-Schleife und akzeptieren Sie meine Antwort. :) – wtpoo

1

Sie nie Ihr Wörterbuch Rückkehr in read_ticker, und es ist unklar, warum Sie rufen die Funktion zweimal auf.

Wo print(c) ist return c gesetzt.

Und ich denke, dass Sie das dict indizieren möchten, anstatt die Eingabe zu indizieren.

Und was ist c, mit dem Sie indexieren? Dies ist nicht definiert. Ich nehme an, dass dies das Wörterbuch ist, wie es in read_ticker definiert ist. In diesem Fall möchten Sie d[x].

Das Wörterbuch c nicht global ist, obwohl man es definieren könnte, so können Sie es nicht von c in der anderen Funktion zuzugreifen (ohne Berücksichtigung, dass die Indizierung nach hinten, selbst wenn möglich). Da das Wörterbuch lokal für die Funktion read_ticker ist und dort modifiziert wird, geben wir das Wörterbuch zurück und speichern es in der Variablen d.

0

Ihre Ticker-Funktion kann get verwenden, die Sie einen Wert zu geben, erlaubt, wenn der Schlüssel nicht existiert, wie folgt aus:

def ticker(): 
    x = input('Ticker: ') 
    return d.get(x, "No entry") 
Verwandte Themen