2011-09-13 12 views
0

私は25文字を入力して何らかのリストに入れたいと思うので、別のものと接続できる文字のルールを作ることができます。 。私がやったこと行列を作成する

は、このでした:

def matris(): 
    matris = [[],[],[],[],[]] 
    counter = 0 
    counter2 = 0 
    counter3 = 0 
    counter4 = 0 
    counter5 = 0 

    while counter !=5: 
     matris[0].append(raw_input('One letter: ')) 
     counter+=1 

    while counter2 !=5: 
     matris[1].append(raw_input('One letter: ')) 
     counter2+=1 

    while counter3 !=5: 
     matris[2].append(raw_input('One letter: ')) 
     counter3+=1 

    while counter4 !=5: 
     matris[2].append(raw_input('One letter: ')) 
     counter4+=1 

    while counter5 !=5: 
     matris[4].append(raw_input('One letter: ')) 
     counter5+=1 

    return matris 

ですから、例えば、私は、これは、それがこのような何か探して行列を生成することがありました「ワン手紙」* 25のために私に尋ねる実行すると:

matris = [['a', 'g', 'i', 't', 'u'] 
      ['s', 'r', 'g', 's', 'm'] 
      ['f', 'e', 'd', 'c', 't'] 
      ['r', 's', 'i', 'f', 'x'] 
      ['t', 'i', 't', 't', 'i']] 

誰かがこれを行うためのより良い方法を持っている場合、あなたがそれを共有した場合、私は感謝します。そして私のプログラムでやりたいことでうまくいく方法です。私のバージョンでできることはわかりません。

私は私のようなもの作ったdictionary.txtがありますので、私はmatris[0][0]+matris[0][1]をマッチング開始してかどうかを確認しようとするだろうと思った 辞書=オープン(「dictionary.txt」、「R」)

をたとえば'a'+'g'で始まる単語があり、次の文字を入力するなどして、3つの最高の(最も価値の高い)単語を見つけます。

私はクラスが必要であると推測しています。だから、これは私が来てどのくらいです:

Class hypotes: 
    def __init__ (self, usedPosiiton, word): 
    self.u = usedPosition 
    self.w = word 
    positions = [] 
    bestWords = [] # There should be maximum three words in this list, 
       # the words with highest score 
私は私が後で最高です言葉は同じ文字を使用していないことを確認することができますように、配列内の位置を保存する必要があると考え

推測私はこのクラスでいくつかの助けが必要になるでしょう。

letterValuePoints = {'A':50, 'B':110, 'C':190, 'D':70, 'E':50, 'F':90, 
        'G':70, 'H':70, 'I':50, 'J':170, 'K':70, 'L':50, 
        'M':70, 'N':50, 'O':70, 'P':110, 'R':50, 'S':50, 
        'T':50, 'U':110, 'V':90, 'X':190, 'Y':170, 'Z':210, 
        'Å':110, 'Ä':90, 'Ö':110} 

は、私は後で私が各文字に値を与えるだろうというときに、私はこのようにそれを行うだろうと思ったが、私はそれが良い方法になる場合知りませんか?

答えて

1

私は質問が出るとは思わない。 ここでは、始めるためのいくつかの抜粋です。

ただちに25文字を読み、heresplitとすると、次のジェネレータに送信します。

def chunks(l, n): 
    """ Yield successive n-sized chunks from l. 
    """ 
    for i in xrange(0, len(l), n): 
     yield l[i:i+n] 

import pprint 
a=raw_input('some letters: ') 
some letters: a b c d e f g h i j k l m n o p q r s t u v w x y 

pprint.pprint(list(chunks(a.split(), 5))) 
[['a', 'b', 'c', 'd', 'e'], 
['f', 'g', 'h', 'i', 'j'], 
['k', 'l', 'm', 'n', 'o'], 
['p', 'q', 'r', 's', 't'], 
['u', 'v', 'w', 'x', 'y']] 

あなたがおおよそのマッチングを行うために探している場合は、この後difflib

>>> get_close_matches('appel', ['ape', 'apple', 'peach', 'puppy']) 
['apple', 'ape'] 
>>> import keyword 
>>> get_close_matches('wheel', keyword.kwlist) 
['while'] 
>>> get_close_matches('apple', keyword.kwlist) 
[] 
>>> get_close_matches('accept', keyword.kwlist) 
['except'] 

[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19], 
[20, 21, 22, 23, 24, 25, 26, 27, 28, 29], 
[30, 31, 32, 33, 34, 35, 36, 37, 38, 39], 
[40, 41, 42, 43, 44, 45, 46, 47, 48, 49], 
[50, 51, 52, 53, 54, 55, 56, 57, 58, 59], 
[60, 61, 62, 63, 64, 65, 66, 67, 68, 69], 
[70, 71, 72, 73, 74]] 

を見て、私はありがとう、あなたは少しこんにちは

+0

:-)あなたの質問を明確にする必要があると思います速い返信のために! =) これは非常にきれいであった: インポートPPRINT デフチャンク(L、N)はxrange(0でiについて " " """ L からの収量の連続Nサイズのチャンク"、LEN( l)、n): yield [i:i + n] a = raw_input( 'some letters:') pprint.pprint(list(chunk(a。スプリット()、5))) しかし、それを分割し、その中にこれらのストリップとリストとして返す方法が存在しなければなりませんか?今ではただの文字をプリントアウトされましたか?多分私は私の質問を編集する必要があり、本当に悪いに見える –

+0

はinsted .. =/ –

+0

あなたはスウェーデンだったことを見ました! =)ここに午後を送ることはできませんか? は、私はおそらく、助けが必要なものを英語で起きるには少し難しいようですか?念入り今5文字ごとの5つのリストから成りリストを、スキャン、およびordlista.txtと一致している単語を見つけるためにしようとするプログラムを入手しようとしています。だから私は2 [[0] [0] [0]とリスト[0]多分あなたは場所のリストを見始めるべきであると考えられ[1]と辞書に任意の単語が文字であるかどうか、そしてそれがリストアップし続けなければ]それは、その後、任意のより多くの一致同じことを行うが、provess文字のリスト[0] [1] .. –