Loop in Loop - 执行错误检查

时间:2018-03-03 03:30:24

标签: python-3.x

代码检查用户ID (id_usager)。如果它没有签出,它会执行else作为错误捕获。如果确实签出,则会调用其他函数并打印("Pour la personne"etc)。话虽这么说,我希望我的程序在之后继续autreRecommandation,但就目前而言,它会在上述打印后退出。

while True:
    id_check = True
    while id_check:
        id_usager = input("Entrer l'ID de l'usager pour lequel vous voulez une recommandation (entre 0 et {}): ".format(n - 1))

        if id_usager.isdigit():
            if int(id_usager) in range(n):
                id_usager = int(id_usager)
                calculer_scores_similarite(reseau)
                print("Pour la personne", id_usager, ", nous recommandons l'ami", recommander(id_usager, reseau, matrice_similarite), ".")
                return id_check == True
            else:
                print("Erreur: l'usager doit être un nombre entier entre ", 0, "et", n - 1, "inclusivement.\n")

        else:
            print("Erreur: l'usager doit être un nombre entier entre ", 0, "et", n - 1, "inclusivement.\n")

    autreRecommandation = input("Voulez-vous une autre recommandation (oui/non)?")
    if autreRecommandation.lower() == "oui":
        return True
    else:
        print("Merci d'avoir utiliser le programme de recommandation d'amis.")
        break

2 个答案:

答案 0 :(得分:0)

您是否尝试过关键字continue

答案 1 :(得分:0)

return id_check == True语句会将控制权返回给您的函数调用者。 相反,您可以使用break语句从内部while循环中退出,然后控件将返回到外部while循环并按预期转到autreRecommandation

代码可能更像

calculer_scores_similarite(reseau)
print("Pour la personne", id_usager, ", nous recommandons l'ami",recommander(id_usager, reseau, matrice_similarite), ".")
id_check == True
break