3

A=10 で Z=35 (B=11、C=12 など) のルックアップ テーブルを作成する必要があります。Python でこれを実現する最も簡単な方法は何ですか? それを行うための非常に簡単な方法があるに違いないことは知っていますが、それを見つけることができないようです。

4

4 に答える 4

11

dictルックアップテーブルには、 :を使用できます。

d = { 'A' : 10, 'Z' : 35 } # etc..

ただし、この場合、結果を計算するための単純な論理ルールがあるように思われるため、ルックアップテーブルの代わりに、単純な算術演算を使用した関数を使用できます。

def letterToNumber(c):
    if not 'A' <= c <= 'Z':
         raise ValueError('invalid character: ' + c)
    return ord(c) - ord('A') + 10

def numberToLetter(x):
    if not 10 <= x <= 35:
         raise ValueError('invalid number: ' + x)
    return chr(x - 10 + ord('A'))
于 2012-04-09T13:43:41.573 に答える
7

ルックアップテーブルは必要ありません–式

chr(c) - 54

c大文字のbeinigを使用して)トリックを実行します。

于 2012-04-09T13:43:55.510 に答える
4

ルックアップテーブルは不要であることに同意しますが、ここに1つあります

>>> import string
>>> x = dict(zip(string.uppercase[:26],range(10,36)))
>>> x['A']
10
>>> x['Z']
35
于 2012-04-09T13:50:28.627 に答える