Python:重试,直到发生更改

Python:重试,直到发生更改,python,loops,google-api,continue,Python,Loops,Google Api,Continue,我不明白这个简单的代码: #!/usr/bin/env python # -*- coding: utf-8 -*- import time for val in "cacatcaca": try: if val == "c": print(val) time.sleep(0.5) if val == "a": print(val) time.sleep(0

我不明白这个简单的代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import time

for val in "cacatcaca":
    try:
        if val == "c":
            print(val)
            time.sleep(0.5)
        if val == "a":
            print(val)
            time.sleep(0.5)
    except val == "t":
        print('We are stock in the letter T')
        time.sleep(0.5)
        continue
结果是:

c
a
c
a
c
a
c
a
而我想要的是在时间结束前在
't'
中获得库存:

c
a
c
a
We are stock in the letter T
We are stock in the letter T
We are stock in the letter T
...
...
...
我的目标是,当我收到一个
['status']=='OVER\u QUERY\u LIMIT'
时,重用Google API的代码


我想继续尝试
JSON
响应,直到收到不同的结果

您在此处错误地使用了try-catch块

您应该将if-else语句中的所有条件放在try块下 如果有例外情况,请打印出来

for val in "cacatcaca":
    try:
        if val == "c":
            print(val)
            time.sleep(0.5)
        elif val == "a":
            print(val)
            time.sleep(0.5)

        elif val=="t":
            print('We are stock in the letter T')
            time.sleep(0.5)

    except Exception as e:
        print(e)
        continue
此代码将打印“我们在字母t处有库存”,直到时间结束

import time

for val in 'cacatcaca':
    if val == 'c' or val == 'a':
        print(val)
        time.sleep(0.5)
    elif val == 't':
        while val == 't':
            print('We are stock at letter t')

对于可重用设计,我更喜欢使用基于以下代码的解决方案:

def fetch_google_api_until_works(*args, **kwargs):
    ok = False
    while not ok:
        response = legacy_fetch_google_api(*args, **kwargs)
        ok = response.get('status', False) != 'OVER_QUERY_LIMIT'
        if not ok:
            time.sleep(0.5)
    return response
然后使用
fetch_google_api_,直到_在应用程序代码中起作用