2016-12-26 15 views
0

10文字のランダムな文字のパスワードとランダムな色の文字を与えるコードを書きました。私は出力色にする必要がある1つの色を入れました。それでは、アプリケーションがすべて(この場合は黄色の)文字をどのように見つけることができるのか疑問です。ユーザーはそれらを見ることができますが、どのようにそれらを見つけることができますか?私は、リストに色を追加し、Pythonの3.4どのようにアプリケーションが色付きの文字を見つけることができますか

from random import choice 
from string import ascii_letters, digits 

chars = ascii_letters + digits 

word = "".join([choice(chars) for i in range(10)]) 

R = '\033[31m' # red 
G = '\033[32m' # green 
B = '\033[34m' # blue 
P = '\033[35m' # purple 
Y = '\033[93m' # yellow 

colors = [R, G, B, P, Y] 

colorpass = "\033[93m" 
for char in word: 
    colorpass += char + choice(colors) 

print(colorpass) 
+0

事前印刷:ループを修正して、次の色が黄色になることを示します。投稿印刷: 'Y 'ですべての場所を検索し、その隣の位置は黄色の文字になります。 –

答えて

2

を - そのちょうど "すべてのサブストリングを見つける" の問題を。

すなわち

import re 
for i in re.finditer(re.escape(Y), colorpass): 
    print colorpass[i.end()] 

あなたは、有効な正規表現マッチャを作るためにあなたの部分文字列内の特殊文字をエスケープする必要があります。 re.escapeはこれを動的に実行するのに最適です。

+0

私はあなたの答えに取り組んで、それは動作しますが、時にはエラーを起こすことがあります。私はこのコードを私のコードに追加しました: re.finditer(re.escape(Y)、colorpass)のiのためにw = "" .join(colorpass [i.end()]) print(w)また、エラーは次のとおりです。IndexError:文字列インデックスが範囲外です。どうすればそれを避けることができますか? – guest013

+0

私はなぜ私のエラーが現れたのか分かりました。今それを停止する必要があります。ご協力ありがとうございます – guest013

0

私は私の頭の上からこれをやって考えることができる唯一の方法は、ループの中にあるを使用しています。次に、色を「検出する」必要があるときは、リストを呼び出すことができ、リストの項目1は、色付き文字列の文字1に対応することができます。

色の取得
colourList = [] 
for char in word: 
    colorpass += char + choice(colors) 
    colourList.append(some_sort_of_color_identification) 

print(colorpass) 

... 

:あなたはこの孤立必要がある場合

for char in range(0, len(word)): 
    detectedColor = colourList[char] 
    print(detectedColor) 
関連する問題