上記のサンプルだとtry/exceptがうまく作動しないのですが、
まず、質問文のコードでは、try/exceptの動作以前に文法エラーで動きませんし、それを修正してもmainを呼び出していないので思うような結果は得られません。
def main()
の後に:
を追加。
- 最終行に
main()
を追加。
sample1のuser_food == food.keys()
は、user_food
の値が文字列で、food.keys()
の返り値がリストに似たオブジェクト(dict_keys)なので、常にFalseになりますが、KeyErrorは発生しません。よって、こちらのprint
が実行されることはありません。
sample2のuser_food in food.keys()
は、food.keys()
の返り値のリスト(に似たオブジェクトdict_keys)の中にuser_food
の値の文字列が要素として含まれていればTrue、含まれていなければFalseになります。KeyErrorは発生しません。よって、こちらのprint
が実行されることはありません。
user_food in food.keys()
を使うとしたら、例えば以下のようにします。
Python
1 if user_food in food.keys():
2 print(f"{user_food}は{food[user_food]}円になります。")
3 else:
4 print("そのネタはありません")
さて、どうしてもKeyErrorを発生させてtry/exceptを使いたいのであれば、たとえばfood[user_food]
を(上記のようなチェックをすることなく)いきなり使えば同じ処理ができます。
Python
1 try:
2 print(f"{user_food}は{food[user_food]}円になります。")
3 except KeyError:
4 print("そのネタはありません")
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/06 01:16
2021/02/06 01:30
2021/02/06 01:38