Python 3.3 +:'int'和'str'不支持的操作数类型

时间:2015-04-27 14:49:13

标签: python encryption

所以我是python编码语言的新手,我的任务是通过用户制作的随机关键字加密随机用户制作的消息。例如用户输入:Python并输入关键字:Help。因此,消息的第一个字母是P,第一个关键字字母是H,这意味着P应该按H的字母位置移动,即8,所以P现在将变为X.必须连续使用关键字,直到加密完成为止。这是我的代码:

def keyword():
  w=[7,3,19,5]
  x=""
  g = 0
  i=0
  w2=input ("Please enter a KeyWord: ")
  m=input ("Please enter a Message: ")
  for ch in m:
      en = chr(ord(ch)+ w2)
      shift = (ord (w2[i%len(w2)]))
      x= (x+en)
      print(str(x))

keyword()

以下是给出的输出:

    Please enter a KeyWord: lol
    Please enter a Message: lol
    Traceback (most recent call last):
      File "<pyshell#2>", line 1, in <module>
        keyword()
      File "H:\t2test.py", line 22, in keyword
        en = chr(ord(ch)+ w2)
    TypeError: unsupported operand type(s) for +: 'int' and 'str'

现在我正在尝试解决这个问题,如果你要说w2需要是一个整数而且它不能加密 - 我现在知道我正在寻找一种方法来使这个代码工作。帮助将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

ord(ch)是一个int,它应该是一个字符串

试试这个:

num = str(ord(ch)) + w2
en = chr(int(num))