Python中的字符串解释

时间:2014-07-25 18:12:04

标签: string search

如果用户输入"搜索" " for"在userinput中我希望它返回"搜索和两者都已输入"

然而,如果用户输入"搜索"和"信息"在userinput中我希望它返回"搜索和信息都已输入"

问题是,如果用户输入"搜索信息",则python识别" for"在"信息"并返回"搜索和输入" //。这不是我想要的!

怎么办?

查看此图片以了解所描述的问题: blah

2 个答案:

答案 0 :(得分:0)

将您更改为以下内容:

order=raw_input("you: ")
    if ("search" in order) and ("information" in order):
        print("Search and Information both in order")
    elif ("search" in order) and ("for" in order):
        print("Search and For both in order")

这样,它会检查"信息"之前"为"。因此"对于"只检查订单是否包含"信息"。

如果你签入python控制台,"search" and "information"相当于python中的"information"。所以你必须分别检查每个单词。

答案 1 :(得分:0)

这里重要的是operator precedence。由于inand更具约束力,因此您的情况实际发生的是

if( "search" and ("for" in order )):
   ...

这意味着第二次匹配足以进入特定分支,因为在Python中,当且仅当它们为空时,字符串才被视为False。所以你的代码基本上等于

if "for" in order:
    print "For"
elif "information" in order:
    print "information"

此外,分支按照他们在源代码中的顺序进行评估(这是有道理的,请参阅"否则,如果")。由于forinformation的子字符串,因此第二个分支不可能发生。一个简单的解决方法是交换两个if-else分支(在解决上一个问题之后)。但是,请记住,在匹配具有相同优先级的情况下,您需要另一种方法。例如字符串format中的informinformation