在 Python 3 中,我有一个编码如下的程序。它基本上接受用户的输入并根据字典(EXCHANGE_DATA)检查它并输出信息列表。
from shares import EXCHANGE_DATA
portfolio_str=input("Please list portfolio: ")
portfolio_str= portfolio_str.replace(' ','')
portfolio_str= portfolio_str.upper()
portfolio_list= portfolio_str.split(',')
print()
print('{:<6} {:<20} {:>8}'.format('Code', 'Name', 'Price'))
EXCHANGE_DATA = {code:(share_name,share_value) for code, share_name, share_value in EXCHANGE_DATA}
try:
for code in portfolio_list:
share_name, share_value = EXCHANGE_DATA[code]
print('{:<6} {:<20} {:>8.2f}'.format(code, share_name, share_value))
except KeyError:
pass
示例输入:
GPG,HNZ,DIL,FRE
输出如下:
Please list portfolio: GPG,HNZ,DIL,FRE
Code Name Price
GPG Guinnesspeat 2.32
HNZ Heartland Nz 3.85
DIL Diligent 5.30
FRE Freightway 6.71
但如果我有这样的输入:
AIR,HNZ,AAX,DIL,AZX
其中术语AAX,AZX
在字典中不存在,(EXCHANGE_DATA)
但术语存在AIR,HNZ,DIL
。该程序显然会抛出KeyError
异常,但我已经用pass
. 问题是pass
代码执行后程序退出,我需要它继续并执行for
循环DIL
。我该怎么做呢?