私は現在GIPHY APIに基づいてランダムなgifを生成するWebビルダーを作っています。私は問題を抱えています。ここでは、APIが0の結果を返すケースをテストします。関数から抜け出し、ループに戻る方法は?
def get_image_link(link):
global flag
set_count = 0
r = requests.get(link)
api_response = json.loads(r.text)
response = api_response['data']
if not response:
print('GIPHY API returned no results... finding another word...')
pass
elif response:
for set in response:
set_count += 1
random_gif_num = random.randint(0, set_count) - 1
try:
flag = True
return response[random_gif_num]['images']['original']['url']
except TypeError:
print(TypeError + '... rerunning application...')
pass
while not flag: get_image_link(get_random_query())
結果は結果ではデータなしで戻ってくる場合には基本的に、私はそれが別の単語をつかむために機能を再試行します。このプログラムは結果のある単語が戻ってきたときに機能しますが、0の結果が返ってくると私はTypeError
となり、ループに戻りません。私は関数から抜け出ず、代わりに[]
型を返すので、これを行うと確信しています。どうすれば関数から抜け出し、whileループに戻り、別の結果を生成することができますか?ありがとうございました。
実行して別の単語を検索しようとしても、私はまだTypeErrorを取得し、ファイルを停止します。どんな考え? – Lewis
@Lewis私は例外ではなく、何らかの理由で 'True'に設定された' flag'変数に関連しています。 – Samuel
get_image_link()は他の場所で呼び出されています。応答変数が[]に等しいときでもループの他の部分にアクセスできると思いますか? – Lewis