1

入力として名前を取り、それをリストに入れ、それに対して ord() を実行するこの関数があります。ただし、フォーマットの問題であると思われるいくつかの(私が信じている)問題があります。私はそれを次のように表示しようとしています:

b = (ascii value)
a = (ascii value)
t = (ascii value)
m = (ascii value)
a = (ascii value)
n = (ascii value)

名前は正しく表示されていますが、ASCII 値は次のように表示されています。

b = [98, 97, 116, 109, 97, 110]
a = [98, 97, 116, 109, 97, 110]
t = [98, 97, 116, 109, 97, 110]
m = [98, 97, 116, 109, 97, 110]
a = [98, 97, 116, 109, 97, 110]
n = [98, 97, 116, 109, 97, 110]

どこが間違っているのかわからないので、以下は私が作成したコードです。

def x():
     name = requestString("name")
     usersName = list(name)
     ascii = [orc(c) for c in usersName]
     for name in name: 
          print name, "=", ascii 

ありがとう!

編集:ありがとう、本当に感謝しています。私が間違っていた場所を見つけてください!

4

5 に答える 5

1

asciiordすべての文字のリストです。それらが表す文字とペアにするには、次を使用しますzip

for num, char in zip(ascii, name):
    print "'{0}'={1}".format(char, num)
于 2014-03-24T23:18:12.970 に答える
1

ここで、どこが間違っていたかを少しレビューします。

def x():
     name = requestString("name")
     usersName = list(name)
     ascii = [orc(c) for c in usersName] # here's the list
     for name in name: 
          print name, "=", ascii # and you're printing it here everytime

次のように、よりPythonで修正できます。

def x():
     name = requestString("name")
     # usersName = list(name) # no need for this line, you can iterate over the string
     ascii = [orc(c) for c in name] #so this is just name
     for i, c in enumerate(name):  # use c for your character var name, 
          print c, "=", ascii[i]   # and enumerate provides the index

何も返さないため、リストを作成する必要はありません。その場で ord(c) を提供することもできます。

def print_ords_of_word(name):
    for c in name:
        print c, '=', ord(c)
于 2014-03-24T23:18:22.033 に答える
1

単一のループで作成できます。

for item in name:
    print item, "=", ord(item)

デモ:

>>> def x(name):
...      for item in name:
...           print item, "=", ord(item)
... 
>>> x('batman')
b = 98
a = 97
t = 116
m = 109
a = 97
n = 110
于 2014-03-24T23:18:24.583 に答える
0

リスト内包表記を使用して usersName 全体を ords のリストに変換したため、リストが返されます。これは、次のように 1 行で記述できます。

print "\n".join("{0} = {1}".format(c, ord(c)) for c in name)

文字列の join メソッドは、シーケンスまたは反復子を取り、各項目を文字列の元の内容 (この場合は \n) で区切ります。

join の呼び出し内の for ループは、ジェネレーターを作成します。理解を深めるのに役立つ場合は、リスト内包表記と考えることができます (ただし、実際にはそうではありません)。

于 2014-03-24T23:21:37.467 に答える