• # nommage, factorisation

    Posté par . En réponse au message Python: Return "Not found" Order_info. Évalué à 6.

    Salut,

    Parfois, nommer les variables, ça aide. J'ai l'impression que tu utilise toujours l pour les listes, mêmes si elles contiennent des objets avec des informations différentes. Un bon nom de variable, pas toujours le même, ça aide.

    Les deux if finaux : sauf erreur de ma part, c'est le même traitement, sur des variables différentes. En factorisant, tu vas :

    • réduire ton nombre de ligne de code (plus facile à lire, débuguer...)
    • simplifier ta fonction appelée:
    def detect_response(shop,questions,order_info,message,history):
     response = ["/ALERT No cases detected, I don't know what to answer"] #Default
     answer_id = "s0"
     last_answer = False
     global messages_dic_1, messages_dic_2
     for l in history:
     if l[0] == message["email"]:
     if "s" in l[4]:
     last_answer = False
     else:
     last_answer = True
     answer_ids = list(eval(l[4].replace("$",",")))
     last_answer_id = answer_ids[-1]
     break
     if last_answer:
     response, last_answer = treat(messages_dic_2, questions) # il manque peut-être des params, c'est pour l'idée
     if not last_answer:
     response, last_answer = treat(messages_dic_1, questions) # il manque peut-être des params, c'est pour l'idée
     return response[0], answer_id.replace("\r","")
    def treat(messages_dic, questions):
     # factoriser le traitement
     return response, last_answer
    • dans les gros pavés de python, rater une indentation est vite arrivé ;)

    Matricule 23415