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