2017-08-07 9 views
0

Je ne comprends pas ce code simple:Python: une nouvelle tentative jusqu'à quelque chose de changement

#!/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 

Il me donne comme résultat:

c 
a 
c 
a 
c 
a 
c 
a 

tout ce que je veux avoir est d'obtenir des actions de la 't' jusqu'à la fin du temps:

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 
... 
... 
... 

Mon but est de réutiliser le code pour l'API Google quand je reçois un ['status'] == 'OVER_QUERY_LIMIT'.

Je veux continuer et essayer la réponse JSON jusqu'à ce que je reçois quelque chose de différent.

Répondre

1

Ce code affichera "Nous sommes en stock à la lettre t" jusqu'à la fin des temps.

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') 
0

Vous utilisez incorrectement le bloc try-catch ici.

Vous devez placer toutes vos conditions dans les instructions if-else sous le bloc try et, le cas échéant, les imprimer.

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 
0

Pour une conception réutilisable, je préfère utiliser une solution basée sur ce code:

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 

Utilisez ensuite fetch_google_api_until_works dans votre code d'application.