-2

我的功能是:

def searchstock():  
dictionary=calcreturn(dictionize(tickers(openfile()),pairslist()))
inp=raw_input("What is the stock ticker? ")
while True:
    try:
        dictionary[inp]
        break
    except KeyError: 
        print("Ticker not found. Please input again ")

print(inp, dictionary[inp])

try/except 不起作用。我正在尝试查看用户输入是否在字典键中,然后返回键和相应的值

如果 imp 不在字典中,为什么这是一个无限循环?

4

3 回答 3

2

只是

inp=raw_input("What is the stock ticker? ")
try:
   dictionary[inp]
   break; #exit loop
except KeyError:
   print "Nope!"

你还需要打破你的while True循环

此外,如果您使用的是 py2x,您将希望使用raw_input而不是input

于 2013-05-06T23:21:39.017 回答
0

代码中的 listkeys 是一个列表,而不是字典。在列表中查找元素不会给您一个 KeyError。

如果您使用列表,

item in list_name

将给出真或假。

还要修改您对 raw_input() 的输入,使其将字符串视为字符串而不是对象名称。

尝试使用以下内容:

try:
    dictionary_name[key]
except KeyError:
    #do something
    print "Key Error"
于 2013-05-06T23:25:13.747 回答
-1

也许我在这里误解了一些东西,但是要检查一个值是否是字典键,这很简单:

'key' in dictionary

返回TrueFalse

此外,您甚至可以执行以下操作:

mydictionary.get('key', 'Key not in dictionary')

如果键不在字典中,您将获得 string "Key not in dictionary",否则您将获得由 标记的实际值'key'

于 2013-05-06T23:30:25.140 回答