使用“编解码器”模块定义函数时遇到问题

时间:2019-09-09 08:16:06

标签: python python-3.x encode codec rot13

我正在尝试编写一个简单的Rot13编码器/解码器,该编码器接受一个字符串,并使用“编解码器”模块对其进行编码/解码。我正在尝试使用以下函数定义函数: codecs.encode('rot13_text','rot_13')

在函数外部使用编解码器模块没有问题。当我尝试使用 codecs.encode(rot13_text,'rot_13')定义函数时,出现NameError

到目前为止,我已经尝试了以下代码的许多变体:

import codecs

def rot13_encoder():
    rot13_text = input("Type the text to be encoded: ")
    codecs.encode(rot13_text, 'rot_13')
    print(rot13_text)

端子输出

>>> def rot13_encoder():
...     rot13_text = input("Type the text to encode and press enter: ")
...     codecs.encode(rot13_text, 'rot_13')
...     print(rot13_text)
...
>>> rot13_encoder()
Type the text to encode and press enter: HELLO
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in rot13_encoder
  File "<string>", line 1, in <module>
NameError: name 'HELLO' is not defined
>>>   

1 个答案:

答案 0 :(得分:1)

似乎您使用的是python 2.7或更早版本。

import codecs

def rot13_encoder(in_string):
    return codecs.encode(in_string, 'rot_13')

in_string = raw_input('Type the text to be encoded: ')
print(rot13_encoder(in_string))

在这种情况下,您应该使用raw_input(...)而不是input(...)