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: buy price, sell price, symbol2: buy price, sell price etc..}

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

你的AddSymbolreturn Names,这是字典。字典不能用作字典键。

只需return stock_symbolAddSymbol.

于 2013-08-15T02:49:53.447 回答
1

AddSymbol(company_name)你返回整个Names字典。然后将整个字典传递给AddPrices函数。 AddPrices意味着将一个股票代码传递给它 (a str),但你传递的是 a dict。您可以修改AddSymbol为 returnstock_symbol而不是Names.

我还建议您的函数名称使用驼峰式大小写,以小写字母开头并将每个单词的第一个字母大写。这是大多数程序员为保持一致性所做的事情,养成良好的习惯是件好事。

于 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 回答