-1

我目前正在用python制作一个密码程序,但我似乎无法解决这个问题:

word = ['a', 'b', 'c']
-----enciphering process-------
message = ['d', 'e', 'f']

print message[x],

我想要发生的事情:

'def'

实际发生的情况:

'd e f'

我知道为什么会有空格,但我似乎无法摆脱它们,我尝试过使用 strip、replace、re.sub、message(映射我不记得的任何内容)和 "".join。这些都使用预先确定的列表,但当我不知道列表将是什么时,它们就不行了。

请帮忙。

*编辑

我的意思是这样的:

Word = raw_input("Enter a word  ")
Message = list(word)

w = raw_input("Enter a number  ")
w = int(w)
n = len(message)

Letters = ['a', 'b', 'c', 'd' and so on until z]

For y in range(0,n):

   For index in range(0,26):

      X = index + w

      If x > 25:
         x = x - 26

      If message[y] == letters[index]:
         print letters[x],

不知道如何摆脱空格,因为我不知道信息会是什么

4

3 回答 3

5

print message[x],打印字符,然后是一个空格(从技术上讲,一个“虚拟”空间,被下一条语句message[x]变成一个空格)。print如果你在循环中调用它,你会得到d e f.

相反,print ''.join(message).

于 2013-03-31T07:34:43.733 回答
1

很难说什么不适合你。这是它在交互式 python 中的外观:

>>> message = ['d', 'e', 'f']
>>> print message
['d', 'e', 'f']
>>> print "".join(message)
def
>>> import sys
>>> sys.stdout.writelines(message)
def>>> 

以语句开头的>>>行,其他行输出。最后一行def没有换行符,后面是>>>输入提示。

于 2013-03-31T07:39:46.723 回答
0

快速回答是

import sys
# ...
sys.stdout.write(letters[x]) 

但是你的代码结构有问题

您想对消息进行编码,例如,您应该将编码功能应用于该消息

word="Hello"
encoded=''.join(map(lambda i: chr(ord(i) ^ 13), word))
print encoded
于 2013-03-31T11:27:16.607 回答