使用多个if&在一个while循环中的elif语句不起作用

时间:2016-06-24 12:57:32

标签: python

我的任务是制作一个程序,询问用户他们使用手机时遇到的问题。然后我的程序会查看输入并查看它可能识别的一系列关键字。某些关键字允许它从我创建的文件中读取某一行。

Here is my code, it's fairly simple however isn't working properly

我运行程序,当从if语句中识别出关键字时,程序应该打印出与if语句中的关键字匹配的行。但是,如果我从不同的if语句中放入多个关键字,它只打印出第一个关键字的行(解决方案)。我尝试使用if而不是elif,但这会产生更大的问题,因为即使识别出关键字,while循环也不会中断。

2 个答案:

答案 0 :(得分:1)

这是因为一旦if或(elif)语句匹配,整个语句就完成了。使用所有if语句并删除你的最后一个else语句。如果你从不满足任何if语句,你的错误条件无论如何都将是假的。如果keyword_comparison == false print('输入新的关键字')或其他东西,你可以使用你的最后一个if语句

类似的东西:

def myfun():
    boolean = False

    while boolean == False:
        word = input("enter input")
        if "hi" in word:
            print "test"
            boolean = True
        if "bye" in word:
            print "test1"
            boolean = True
        if boolean == False:
            print "please try again"

答案 1 :(得分:0)

问题

首先,正如您在评论中提到的那样,您应该提供一个MCV示例,这意味着可以自行运行的最小代码并重现您的错误,这通常意味着将所有内容都包含在一个文件中但是如果你决定让.txt至少提供它。

此外,粘贴您的代码,而不是它的图像,因为我们需要重新键入所有代码。

答案

如果您想要多次打印,则无法将它们放在同一if ... elif ... else ...块中。您需要在自己的if ...块中检查每个条件。此修改意味着您无权访问公共else ...,但这有一个简单的解决方案,请检查该标记是否仍为False

while not keyword_recognition:
    if condition1:
        print("1")
        keyword_recognition = True

    if condition2:
        print("2")
        keyword_recognition = True

    if condition3:
        print("3")
        keyword_recognition = True

    ...

    if not keyword_recognition:
        print("Unrecognised keywords, ...")

进一步更正

你还有另一个错误:

<<< ('hello' and 'world') in 'hi world'
>>> True

首先评估括号内部,产生“世界”,然后检查这个部分结果。如果你想强迫两者都在句子中,你应该使用以下内容:

<<< string = 'hi world'
<<< ('hello' in string and 'world' in string) or 'goodbye' in string
>>> False

parethesis将两个操作包装在一起,因此string必须包含'hello'和'world',或者只包含'goodbye'。除非您使用exclusive或。

,否则满足这两个条件也会产生True