python字符串到数组

War*_*ers 0 python arrays string python-3.x

我正在为学校创建一个简单的加密项目.我正在使用Python.

目标:用户输入字符串,例如hello world! 我必须将其转换为数组:space=0, a=1, b=2, ... z=26, .=27, ,=28, ?=29 and !=30

我用字典:

dict = {' ': 0, 'a': 1, 'b': 2, 'c': 3,...}
Run Code Online (Sandbox Code Playgroud)

我的代码

def messageToCode(message):
    xarray = [None]
    length = len(message)
    ctr = 0
    while not ctr == length:
        xarray.append = dict[message.charAt(ctr)]
        ctr = ctr + 1
    return xarray
Run Code Online (Sandbox Code Playgroud)

这不行.有什么建议?

Ale*_*all 5

有一些严重的问题:

  • xarray应该是空的,所以只是[].你写的是一个包含单个元素的列表:None.None是一个实际值,就像5或"a",你不希望它在你的最终结果中.
  • =用于赋值,因此xarray.append = ...为方法赋值append,这是您不想要的.你想调用这个函数,即xarray.append(...).
  • .charAt来自Java和其他语言.要从字符串中获取字符,您可以将其编入索引,就像列表或字典一样,即使用方括号:message[ctr].

还有一些不太严肃的事情:

  • not ctr == length写的更好ctr != length.想象一下!=是≠.在这种情况下,更好的说法ctr < length是因为这就是意图的真实含义:message[ctr]只有在ctr < length(和ctr >= 0)时才有效,而不仅仅是在何时ctr != length.如果将代码更改为ctr每次迭代增加2次或更多并ctr跳过,则也不希望循环永远继续length.
  • ctr = ctr + 1写得更好ctr += 1,所以你不必两次写变量.

对代码进行这些更改,确保它有效,将其编辑到您的问题中,然后我会一点一点地告诉您如何进一步改进它.最终,我们将在另一个答案中得到最佳版本.

  • 基于你的答案,我看到我很惊讶你不做[代码审查](http://codereview.stackexchange.com) (5认同)
  • 你会完成任务......除非你被吸入[第二监视器]的生产力下沉(https://chat.stackexchange.com/rooms/8595/the-2nd-monitor).....发送帮助!说真的,我们欢迎你CR.即使其他人要说同样的话,也没有人会以这种态度提出任何答案! (3认同)