如何从Python 2.7中的字符串中按顺序查找字母

时间:2017-10-04 22:42:14

标签: python string python-2.7

对于我在Python 2.7中创建的项目,我必须编写一些可以判断字母“i”和“a”是否出现在用户输入的字符串中的内容。字母必须按顺序排列,但它们不必是顺序的(中间可以有其他字母)。我怎样才能对它进行编码,以便它能够检测到字符串中的那组条件?

到目前为止我所拥有的是......

name = easygui.enterbox("string being searched");
term1 = "i";
number = name.find(term1)
term2 = "a";
number = name.find(term2)
if(number > 1):
    easygui.msgbox("message")
    bonus = True
else:
    bonus = False

...但它没有考虑到字母的顺序。我经历了很多类似的问题,但没有什么能够奏效。

3 个答案:

答案 0 :(得分:1)

您可以找到第一个字母首次出现的位置(以及是否),然后从该位置搜索第二个字母。

str.find有一个可选的启动参数,您可以使用它来指定搜索第二个字母的位置。

答案 1 :(得分:1)

find字符串方法为您提供第一次出现的子字符串的索引。如果找不到,则返回-1。

name = easygui.enterbox("string being searched")
term1 = 'i'
term2 = 'a'
position1 = name.find(term1)
position2 = name.find(term2)
if(position1 != -1 and position2 != -1 and position1 < position2):
    easygui.msgbox("message")
    bonus = True
else:
    bonus = False

答案 2 :(得分:0)

如前所述,find方法返回索引。这可能很有用。不要使用在原始代码中被覆盖的number值,只需检查成员身份。我们可以在if语句中使用in执行此操作。

# set the value as a string just for easy use
name = 'i am super'

# check for membership of both "i" and "s"
if 'i' in name and 's' in name:

    # Now use the .find method to check the indexes and make sure they are in the order you want (i before a or in this case s).
    if name.find('i') < name.find('s'):

        # print the indexes just to 2x check
        print(name.find('i'))
        print(name.find('s'))

        # if both conditions are valid, print True, here's where you'd assign bonus to True
        print('True')
    else:
        # print or assign bonus to false.
        print('False')