我正在尝试解决第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。
答案 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.