2011-03-10 13 views
0

私は最初のプログラムを書いています。私はそうするためにpython3を使ってきました。私はどこかで議論された答えを見つけることができない、または私がそれを見るにはあまりにも密度が高いと思う、基本的だと思う問題にぶつかった。私の未経験であなたの忍耐力に感謝します。レターペアをデカルト座標に変換するか、( 'A'、 'B')〜(1,2)

の組み合わせ( 'GIMP'、2)

[('g', 'i'), ('g', 'm'), ('g', 'p'), ('i', 'm'), ('i', 'p'), ('m', 'p')] 

私はこれらを直交座標になりたいので、私はこれをやったが返されます...期待して

(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,x) = range(17) 

文字がすること数字で切り替えることができますが、文字の周りの厄介な( ')はそれを妨げます。

リストをどのようにして取得できますか?私は運

combo.replace("'","") 

または座標に文字付きペアオフの組み合わせのリストをオンにするよりまっすぐ進む方法があります場合、私は知ってみたいせずに置き換える機能を使用してみました

[(g,i),(g,m)...] 

それ。

ご協力いただきありがとうございます。

答えて

0

Pythonの別の初心者からは、文字をキーとして使用して辞書を作成し、各文字の値として任意の数値を入力し、各文字の数値を取得することができます。

#1 make a dict 
prefValues = {'g' : 1, 'i' : 2, 'm' : 3, 'p' : 4} 

#2 make a list 
word = [] 
for char in 'gimp': 
    #if the letter is in the dict 
    if char in prefValues: 
     #append in the list the corresponding value 
     word.append(prefValues[char]) 

これで、デカルト座標を生成し続けます。リストからペアを生成する際に問題がある場合は、この回答を確認してください。Pairs from single list

+0

文字列(一重引用符または二重引用符で囲まれています)は、識別子(少なくともほとんどの言語では)と同じではありません。あなたはプログラムがどのように振る舞うべきかを教えておらず、それは答えを助けるために必要とされるでしょう。あなたが気にするのは出力がどのように表示されるかということだけですが、それは簡単です。 – Apalala

+0

Pythonの "word"と "word"はどちらも文字列です。 –

0

ありがとうStefとapalalaに助けてください。私はあなたのソリューションを実現することができませんでしたが、私が仕事をすることができた魅惑的でないソリューションを視覚化するのに役立ちました。私はここに私のソリューションを投稿したいと思っています。

私がしたことは、可能なすべての組み合わせに対して持っていた組み合わせのリストをチェックして、組み合わせが存在する場合は、対応する番号の新しい座標リストを拡張しました。私はこれが上記の解決策がはるかに効果的な方法で得られるものだと思います。私の目的は120の可能な組み合わせしか含んでいなかったので、面倒ではあるが、この方法は実行可能でした。

combo = (list (combinations (abcdefghijlmnop, 2)) 

cords = [] 
if ('a','b') in combo: 
     cords.append ((0,1)) 
else:quit 

次に、(a、c)(a、d)の最後の3行を繰り返しました。

0

文字の序数を使ってみるとよいでしょう。 'a'の順序値から文字の順序値のオフセットを使用する場合は、適切な座標を取得する必要があります。

[(6, 8), (6, 12), (6, 15), (8, 12), (8, 15), (12, 15)] 

::これはにcoordsを設定します

from itertools import combinations 

word = "gimp" 

coords = [(ord(x) - ord('a'), ord(y) - ord('a')) for x, y in combinations(word.lower(), 2)] 

のようなものを試してみて、あなたの言葉で非ASCII文字を使用する場合、これは正しく動作しません。

関連する問題