我正试图实现Rot-13函数,但我想还是坚持使用新行。你知道吗
这是我的密码:
import cgi, string
def convert():
lower = string.ascii_lowercase
upper = string.ascii_uppercase
punctuation = string.punctuation + ' '
with open('data.txt', 'r') as myfile:
s = myfile.read()
s = '%(pre_b)s%(s)s%(pre_e)s' % {'pre_b': '<pre>', 's': s, 'pre_e': '</pre>'}
s = ''.join(map(lambda x: shift(x, lower, upper, punctuation), s[5:-6]))
return cgi.escape(s, quote= True)
def shift(x, lower, upper, punctuation):
if x in punctuation:
return x
elif x.istitle():
return upper[(upper.index(x) + 13) % 26]
try:
return lower[(lower.index(x) + 13) % 26]
except:
print x
print convert()
单行语句正在处理中,但当输入包含新行时,python会说TypeError: expected string, NoneType found
文件的内容数据.txt文件如下:
test
test test
请帮忙。你知道吗
您的错误与换行有关,但不仅限于换行。基本上,对于
punctuation
、lower
和upper
中的任何字符,shift()
函数返回一些内容。其他的一切都在这里结束其中函数不返回任何内容,即值
None
。当你试图加入一个列表,其中一些元素不是字符串,你得到的错误。你知道吗总之,您甚至需要为不在
punctuation
、lower
和upper
集中的字符返回一些内容。返回x
的伪代码:以及用于返回
''
的伪代码。你知道吗相关问题 更多 >
编程相关推荐