0

入力したユーザー名(Rex Ryan)を6文字の名前(ryanre)に変換し、番号付きID(A = 01、B = 02、...、Z = 26)に変更しようとしています。

私はこれでフルネームを6文字の名前に変換しようとしました:

def converter():
    first = raw_input('What is the first name of the user? ')
    last = raw_input('What is the last name of the user? ')
    first[0:2] = firstname
    last[0:4] = lastname
    user = lastname + firstname
    print user

実行すると「名が定義されていません」と表示され続けます。どんな方向性や読み方も役に立ちます。私はこれを主に自分でやりたいと思っています。自分のために書いて欲しいのなら、何かをダウンロードするだけでいいのです。

4

4 に答える 4

4

あなたは後ろ向きにあなたの声明を持っています:

firstname = first[0:2]

戻り値を一連の数値に変換する限り、を見てくださいord。あなたが説明しているマッピングを実行します。

于 2012-09-27T13:40:26.697 に答える
2

次のようなことをする必要があります。

def converter():
    first = raw_input('What is the first name of the user? ')
    last = raw_input('What is the last name of the user? ')
    firstname = first[0:2]
    lastname =  last[0:4]
    user = lastname + firstname
    print user

IDを生成するには、次のようにします。

の各文字のインデックスを見つけて、ascii_lowercaseそれらすべてを1ずつインクリメントし、連結します。

In [5]: from string import ascii_lowercase

In [6]: ascii_lowercase
Out[6]: 'abcdefghijklmnopqrstuvwxyz'

In [7]: ''.join("{0:02}".format(ascii_lowercase.index(x)+1) for x in 'ryanre')
Out[7]: '182501141805'
于 2012-09-27T13:40:26.353 に答える
0

split名前を単一の文字列として入力しupper、単一の大文字小文字に変換してからord、オフセット値(ヒント:substract ord('A'))と組み合わせて、各文字に必要な数値を取得できるようにするために使用できます。次に、出力文字列を作成するときに、文字列のフォーマットを調べて、1桁の値を先頭の0で埋めます。

于 2012-09-27T13:43:57.073 に答える
0

ルックアップとして使用するdictを生成することもできます。まず、IDに使用する整数のリストを作成します(ここでは0から始まります)。

t = 'ryanre'
num = list(range(25))

BIFchr()はその逆でord()あり、他の回答ですでに言及されています。ここで関数を読んでください

alpha = list(map(chr, range(97, 123)))
db = dict(zip(alpha,a)) # merge the lists into a dict
trasltd = [db[x] for x in t] 
res = ''.join(str(x) for x in trasltd) # merge the elements of the list
于 2012-09-27T13:58:10.837 に答える