我的任务是制作一个程序,询问用户他们使用手机时遇到的问题。然后我的程序会查看输入并查看它可能识别的一系列关键字。某些关键字允许它从我创建的文件中读取某一行。
Here is my code, it's fairly simple however isn't working properly
我运行程序,当从if语句中识别出关键字时,程序应该打印出与if语句中的关键字匹配的行。但是,如果我从不同的if语句中放入多个关键字,它只打印出第一个关键字的行(解决方案)。我尝试使用if而不是elif,但这会产生更大的问题,因为即使识别出关键字,while循环也不会中断。
答案 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