2017-02-04 20 views
0

私は第3レベルのpython-challenges(http://www.pythonchallenge.com/index.php)を解決しようとしています。2つの同じ文字を別々に扱うにはどうすればよいですか?

私は難題を解決するためにいくつかのコードを書いています。

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) 

ここで問題は、コードに2つの 'c'があることです。最初のcのために生成されたものと同じjlistは、新しいjlistを生成する代わりに、2番目のcのために再現されます。

The code output

+1

1.あなたがそうであるという質問は何ですかここに恋してる?あなたの出力は**画像ではありません**。プレーンテキストの出力をあなたの投稿にコピーしてください。 – usr2564301

+2

'if boo == True'?どうして 'if(boo == True)== True'ですか? – melpomene

+0

@melpomeneは、彼らはまったく同じです、両方はい、それはポイントだZeus3101 @同じ値 – Zeus3101

答えて

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. 
+0

助けてくれてありがとう。私はindex()が実際に最初の発生を考慮しているのだろうかと思っていました。これで修正されました。 – Zeus3101

+0

は(http://stackoverflow.com/help/someone-answers)[受け入れられたとして答えをマーク]を忘れないでください。 – trincot

関連する問題