涉及列表的格式问题

2024-09-30 20:37:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数,它接受一个名称作为输入,把它放入一个列表,然后对它运行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 

谢谢!你知道吗

编辑: 谢谢,非常感谢。去我错的地方!你知道吗


Tags: 函数代码namein名称列表forvalue
3条回答

下面是对你的错误之处的一点回顾:

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

你可以像这样做:

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)

您可以在单个循环中进行:

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

ascii是所有字符的ord列表。要将它们与它们所代表的字符配对,请使用^{}

for num, char in zip(ascii, name):
    print "'{0}'={1}".format(char, num)

相关问题 更多 >