0

ここに私が持っているものがあります:

from pprint import pprint

Names = {}
Prices = {}
Exposure = {}

def AddName():
    company_name = input("Please enter company name: ")
    return company_name

def AddSymbol(company_name):
    stock_symbol = input("Please enter a stock symbol: ")
    Names[stock_symbol] = company_name
    return Names

^^ これにより、Names 辞書が {symbol:company name} として更新されます。

def AddPrices(stock_symbol):
    buy = float(input("Please enter buying price of stock: "))
    sell = float(input("Please enter current price of stock: "))
    Prices[stock_symbol] = buy, sell
    return Prices

^^ これにより TypeError: unhashable type: 'dict' が生成されます。{symbol: 購入価格、販売価格、symbol2: 購入価格、販売価格など..} のように Price 辞書を更新する必要があります。

def printDicts(Names, Prices):
    '''
    For debug purposes, prints out contents of dictionaries
    '''
    print( "Names is now:" )
    pprint(Names)

    print("Prices now:")
    pprint(Prices)



def main():
    company_name = AddName()
    stock_symbol = AddSymbol(company_name)
    AddPrices(stock_symbol)
    printDicts(Names, Prices)

main()

プログラミングが初めてなので、これを修正する方法が完全にはわかりません。助けてくれてありがとう!

4

3 に答える 3

1

あなたのAddSymbol戻り値はNames、辞書です。ディクショナリはディクショナリ キーとして使用できません。

return stock_symbolで使用するだけAddSymbolです。

于 2013-08-15T02:49:53.447 に答える
1

あなたは辞書AddSymbol(company_name)全体を返します。Names次に、この辞書全体がAddPrices関数に渡されます。 AddPrices株式記号を渡すことを意図しています (a str) が、を渡していますdict。の代わりにAddSymbolreturnに変更できます。stock_symbolNames

また、関数名は小文字で始まり、各単語の最初の文字を大文字にするキャメルケースにすることをお勧めします。これは、ほとんどのプログラマーが一貫性のために行っていることであり、良い習慣を形成することは良いことです。

于 2013-08-15T02:50:02.047 に答える
0

おそらく、AddSymbol関数で返すつもりだったのはシンボルであり、別の辞書ではありませんか? その場合、次のようにします。

def AddSymbol(company_name):
    stock_symbol = input("Please enter a stock symbol: ")
    Names[stock_symbol] = company_name
    return stock_symbol
于 2013-08-15T02:50:16.787 に答える