これは少し複雑です。他の関数で既に返された txt ファイルを介して作成された 2 つの辞書パラメーターを受け入れる関数があります。countries パラメーターには、3 文字の国コードがキーとして、対応する国が値として含まれます。メダル辞書には 3 文字のコードがキーとして記載されていますが、ゲーム数、金メダル、銀メダル、銅メダルにそれぞれ対応する 4 つの整数を含むセットがあります。関数は、メダル ディクショナリを介して 3 文字の国コード ループを受け入れ、コードがメダル ディクショナリのキーであるかどうかを確認することです。3 つの可能性が考えられます: もしそうなら、次のようにフォーマットされたリストを作成することになっています:[
[‘Country’,’Code’,’Gold’,’Silver’,’Bronze’],
[‘Great Britain’
,
‘GRE’
,800, 400, 750]
]
. この部分はコンパイルしてリストを作成しますが、ゲーム部分はメダル キー値から削除し、タプル/セットではなく分岐リストとして返す必要があります。文字列がディクショナリのキーでない場合、文字列が空の場合、上記のフォーマットですべての国をリストに追加します。私はその場でループするのが間違っていると思うので、この部分はコンパイルされていません。文字列が空ではなく、辞書にもない場合は、 を返します[INVALID CODE, n/a]
。その部分はうまくいくと確信しています。これが私のコードです:
def findMedals(countries, medals):
some_strng = input("input a three letter country code and i'll see if I can find it: ")
reference = ['Country','Code','Gold','Silver','Bronze']
medalList= [reference]
for key in medals.items():
if some_strng in key:
medalList.append([countries[some_strng],key,medals[some_strng]])
break
if not some_strng in key:
if some_strng == '':
medalList.append([countries[some_string], key for key in countries,medals[some_strng] for key in medals])
else:
medalList.append(['INVALID CODE', 'n/a'])
print(medalList)
return(medalList)
findMedals(country('CountryCodes.txt'),medals('GoldMedals.txt'))