2016-05-17 9 views
0

最初の関数のキーを入力するようにユーザーに促すループ関数を書き込もうとしています。キーであればその値を出力します。入力された単語がディクショナリにない場合、「エントリなし」が返されます。関数の辞書値を別の関数に出力する

これまでの内容

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() 

第2の関数で入力されたキーの値を返すにはどうすればよいですか?

答えて

0

あなたread_ticker()関数は、c返す必要があります:

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 

をし、次のように、あなたはあなたのティッカー機能を変更することができます。

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

!もう1つの質問ですが、入力をどのようにループさせるのですか? –

+0

forループまたはwhileループに入れて、私の答えを受け入れてください。 :) – wtpoo

1

あなたはread_tickerであなたの辞書を返すことはありません、それは理由は不明ですあなたは関数を2回呼び出しています。

print(c)は、return cとなります。

あなたは入力のインデックスを作成するのではなく、辞書のインデックスを作成すると思います。

また、インデックスを作成しているcとは何ですか。これは未定義です。私はこれがread_tickerで定義された辞書であることを前提としています。この場合、d[x]が必要です。

cはグローバルではありませんが、他の機能ではc(可能な場合でもインデックスが後ろにあることは無視してください)でアクセスすることはできません。代わりに、辞書は関数read_tickerのローカルなので、辞書を返して変数dに格納します。キーはこのように、存在しない場合は、値を与えることができますgetを使用することができます

0

あなたのティッカー機能、:私が探していたものです

def ticker(): 
    x = input('Ticker: ') 
    return d.get(x, "No entry") 
関連する問題