“无法分配给函数调用”错误

时间:2015-02-21 23:05:17

标签: python function variable-assignment

我的函数应该将一个字符串参数作为输入,并返回输入字符串的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

2 个答案:

答案 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附加问题。当然,很难帮助调试你选择向我们隐藏的代码。