我的函数应该将一个字符串参数作为输入,并返回输入字符串的rot-13编码。
def str_rot_13(string):
c = list(string)
for num in c:
if ord(num) >= ord('a') and ord('z'):
if ord(num) >=('m'):
ord(num) -=13
else:
ord(num) +=13
elif ord(num) >= ord('A') and ord('Z'):
if ord(num) >=('M'):
ord(num) -=13
else:
ord(num) +=13
z += chr(ord(num))
return z
它给了我一个“无法分配给函数调用”的错误。我不确定我做错了什么。
编辑:终于让它发挥作用了!感谢。
解决方案:
if ord(num) >= ord('a') and ord('z'):
if ord(num) >=('m'):
k+= chr(ord(num)-13)
else:
k+= chr(ord(num)+13)
elif ord(num) >= ord('A') and ord('Z'):
if ord(num) >=('M'):
k+= chr(ord(num)-13)
else:
k+= chr(ord(num)+13)
return k
答案 0 :(得分:3)
问题在于像这样的行:
ord(num) -=13
ord
是一个内置函数。您可以使用函数返回的值,但不能为函数赋值。
你能做的是:
num = chr(ord(num) - 13)
这可能无法解决您的问题,因为您有其他错误,例如您尝试添加到变量z
而未在某处声明它。你应该在for循环之前声明它:
z = ''
for num in c:
...
并缩进行
z += chr(ord(num))
所以它在里面 for循环。你也可以做到:
z += num
因为chr和ord是反向函数。
答案 1 :(得分:3)
你做错了是,你正在分配一个函数调用! E.g:
ord(num) -=13
您正在分配给函数调用ord(num)
- 并且,您无法执行此操作。
您实际上想要做的事情大概是:
num = chr(ord(num) - 13)
等等。
当然,除非您在选择不向我们展示的部分代码中定义z
,否则您仍会遇到z
附加问题。当然,很难帮助调试你选择向我们隐藏的代码。