如何分别处理两个相同的字符?

时间:2017-02-04 12:48:45

标签: python

我正在尝试解决第3级python-challenge(http://www.pythonchallenge.com/index.php

我已经写了一些代码来解决这个挑战。

    text = "EXAcTLYdsgsdcTLY"
    jlist = []
    boo = False

    for i in text:
        if ord(i) in range(97, 123) and text.index(i) in range(3, len(text) - 2):
            j0 = text.index(i)
            j1 = text[j0 + 1]
            j2 = text[j0 + 2]
            j3 = text[j0 + 3]
            j_1 = text[j0 - 1]
            j_2 = text[j0 - 2]
            j_3 = text[j0 - 3]

            jlist = [j_3, j_2, j_1, j1, j2, j3]

            boo = False

        for j in jlist:
            if ord(j) in range(65, 91):
                boo = True
            else:
                boo = False
                break

        if boo == True:
            print(i)

现在的问题是代码中有两个c。为第二个c生成的第一个c的相同jlist将被复制,而不是为它创建一个新的jlist。

The code output

1 个答案:

答案 0 :(得分:0)

这是因为index返回第一次出现的字符,因此这个赋值将为第二个c提供错误的值:

        j0 = text.index(i)

而是使用for

获取enumerate()语句中的排名
for j0, i in enumerate(text):
    if ord(i) in range(97, 123) and text.index(i) in range(3, len(text) - 2):
        # no need to calculate j0 now.