python中的.find()函数不起作用

时间:2016-10-09 16:07:37

标签: string python-2.7 substring

我刚刚写了这个来测试python 2.7中的.find()函数,但它似乎不起作用。我的语法看起来正确,但我无法弄清楚它为什么不起作用。

s=raw_input('Please state two facts about yourself')

if s.find('24' and 'England'):
    print 'are you Jack Wilshere?'
else:
    print 'are you Thierry Henry?'

3 个答案:

答案 0 :(得分:2)

您的布尔值和newBar的使用都是错误的。

首先,如果您.find()在一起and,您只需获得'24' and 'England'

'England'

这是因为在Python意义上这两个字符串都是>>> '24' and 'England' 'England' 所以最右边的是True的结果。因此,当您使用and时,您只搜索s.find('24' and 'England')

'England'返回子字符串的索引 - .find()如果找不到,那么在Python意义上也是-1

True

并且>>> bool(-1) True 可以返回索引.find()以查找以目标字符串开头的字符串,在布尔意义上,00。所以在这种情况下你会错误地认为找不到字符串。

在Python中测试状态或成员资格测试的正确运算符是in

False

您可以用>>> s='I am 24 and live in England' >>> '24' in s and 'England' in s True 语句编写或更具惯用性来测试多个条件,使用if(适用于all)或and(适用于{ {1}})与any

or

然后,您可以在将来无缝添加条件,而不是更改代码。

答案 1 :(得分:0)

Find不返回布尔值,它返回找到的值的起始索引。如果找不到该值,则返回-1。

s=raw_input('Please state two facts about yourself')

if s.find('24') >=0 and s.find ('England') >= 0:
    print 'are you Jack Wilshere?'
else:
    print 'are you Thierry Henry?'

https://www.tutorialspoint.com/python/string_find.htm

答案 2 :(得分:-1)

您需要使用s.count() 或每个s.find() != -1::英格兰和24

if s.find('24' and 'England'):  # it's a number which is always true hence your code is failing