Python 搜索项目,然后使用if-else显示错误

Python 搜索项目,然后使用if-else显示错误,python,Python,这是我代码的一部分。我不知道为什么If和elif不起作用。如果我删除它们,我的代码就可以完美地工作。我在另一个代码中也有同样的东西,这段代码中唯一不同的是我有2个sys.argv。当我看essaie时,它的值是3。我想确定是否缺少sys.argv 2来打印消息。有小费吗 这段代码导入一个txt,然后制作一个列表,然后搜索它,然后显示写入的结果 exemple of list: pomme: 23 banana: 10 orange: 12 试试这个: def recherche(essai

这是我代码的一部分。我不知道为什么If和elif不起作用。如果我删除它们,我的代码就可以完美地工作。我在另一个代码中也有同样的东西,这段代码中唯一不同的是我有2个sys.argv。当我看essaie时,它的值是3。我想确定是否缺少sys.argv 2来打印消息。有小费吗

这段代码导入一个txt,然后制作一个列表,然后搜索它,然后显示写入的结果

exemple of list:
pomme: 23
banana: 10
orange: 12


试试这个:

def recherche(essaie):
    while True:
        if len(essaie) > 3:
            print("Un seul argument est attendu, soit le nom du fichier à traiter")
            sys.exit()
        elif len(essaie) < 3:
            print("Il faut préciser le nom du fichier à traiter")
            sys.exit()
        else:
            entree = essaie[1]
            item = essaie[2]
            choix = str(entree)
            texte = choix.strip("[']")

            resultat = [s for s in ligne(texte) if item in s] #finding the word in lines
            resultat2 = str(resultat)
            resultat3 = resultat2.strip("[']")
            print(resultat3)
            sys.exit()

if __name__ == "__main__":
    recherche(sys.argv)
def recherche(essaie):
尽管如此:
如果len(essaie)>3:
印刷品(“不需要争论,只需要名字就可以了”)
sys.exit()
elif len(essaie)<3:
印刷品(“我的名字叫菲舍尔·特拉特”)
sys.exit()
其他:
主菜=小菜[1]
item=essaie[2]
choix=str(主菜)
texte=choix.strip(“[']”)
resultat=[s表示对齐中的s(texte),如果s中有项]#在行中查找单词
resultat2=str(resultat)
resultat3=resultat2.strip(“[']”)
打印(结果3)
sys.exit()
如果名称=“\uuuuu main\uuuuuuuu”:
recherche(系统argv)
试试这个:

def recherche(essaie):
    while True:
        if len(essaie) > 3:
            print("Un seul argument est attendu, soit le nom du fichier à traiter")
            sys.exit()
        elif len(essaie) < 3:
            print("Il faut préciser le nom du fichier à traiter")
            sys.exit()
        else:
            entree = essaie[1]
            item = essaie[2]
            choix = str(entree)
            texte = choix.strip("[']")

            resultat = [s for s in ligne(texte) if item in s] #finding the word in lines
            resultat2 = str(resultat)
            resultat3 = resultat2.strip("[']")
            print(resultat3)
            sys.exit()

if __name__ == "__main__":
    recherche(sys.argv)
def recherche(essaie):
尽管如此:
如果len(essaie)>3:
印刷品(“不需要争论,只需要名字就可以了”)
sys.exit()
elif len(essaie)<3:
印刷品(“我的名字叫菲舍尔·特拉特”)
sys.exit()
其他:
主菜=小菜[1]
item=essaie[2]
choix=str(主菜)
texte=choix.strip(“[']”)
resultat=[s表示对齐中的s(texte),如果s中有项]#在行中查找单词
resultat2=str(resultat)
resultat3=resultat2.strip(“[']”)
打印(结果3)
sys.exit()
如果名称=“\uuuuu main\uuuuuuuu”:
recherche(系统argv)


你说的“不工作”是什么意思?你期望什么,得到什么?同样在你的主函数中,如果你传入的参数少于2个,你会得到一个超出范围的异常,因为你在检查长度之前要提取它们。@Dana我想这就是他在
recherche
Hi Dana中试图做的,我添加了我得到的错误,这正是超出范围的例外情况。我试着只在需要的地方编写sys.argv2,而不是在main中调用它,但它仍然不起作用!因此,我想显示错误,而不是范围验证错误。正如TM adam所说,这就是我在elif中试图做的:iv'e添加了我的完整代码,这样你就可以看到发生了什么你所说的“不工作”是什么意思?你期望什么,得到什么?同样在你的主函数中,如果你传入的参数少于2个,你会得到一个超出范围的异常,因为你在检查长度之前要提取它们。@Dana我想这就是他在
recherche
Hi Dana中试图做的,我添加了我得到的错误,这正是超出范围的例外情况。我试着只在需要的地方编写sys.argv2,而不是在main中调用它,但它仍然不起作用!因此,我想显示错误,而不是范围验证错误。正如TM adam所说,这就是我在elif中尝试做的:iv'e添加了我的完整代码,这样你就可以看到发生了什么,我不必使用main?不,它不是c,它是python。你可以在任何地方调用你的函数。事实上,如果你打算将这个文件导入到另一个文件中,你只需要使用
函数即可,否则你只需调用
recherche
就可以了,谢谢它工作得很好,我想知道为什么它不能用main,呵呵,但是它工作得很好。如果你愿意,你仍然可以在
main
中使用它,但是你不必使用main?不,它不是c,它是python。你可以在任何地方调用你的函数。事实上,如果你打算将这个文件导入到另一个文件中,你只需要使用
函数即可,否则你只需调用
recherche
就可以了,谢谢它工作得很好,我想知道为什么它不能与主hehe一起工作,但是它工作得非常好。如果你愿意,你仍然可以在
main
中使用它,但你不必这样做
IndexError: list index out of range
def recherche(essaie):
    while True:
        if len(essaie) > 3:
            print("Un seul argument est attendu, soit le nom du fichier à traiter")
            sys.exit()
        elif len(essaie) < 3:
            print("Il faut préciser le nom du fichier à traiter")
            sys.exit()
        else:
            entree = essaie[1]
            item = essaie[2]
            choix = str(entree)
            texte = choix.strip("[']")

            resultat = [s for s in ligne(texte) if item in s] #finding the word in lines
            resultat2 = str(resultat)
            resultat3 = resultat2.strip("[']")
            print(resultat3)
            sys.exit()

if __name__ == "__main__":
    recherche(sys.argv)