【问题标题】:"Can't assign to function call"“无法分配给函数调用”
【发布时间】:2015-04-23 12:24:32
【问题描述】:

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

它给了我一个“无法分配给函数调用”的错误。我不确定我做错了什么。

【问题讨论】:

    标签: python function variable-assignment


    【解决方案1】:

    你做错了什么,你正在分配一个函数调用!例如:

    ord(num) -=13
    

    你正在分配给函数调用ord(num)——而且,你不能这样做。

    你实际上想要做的大概是:

    num = chr(ord(num) - 13)
    

    等等。

    当然,您仍然会遇到附加到z 的问题,除非您在您选择不向我们展示的部分代码中定义了z。当然,很难帮助调试您选择对我们隐藏的代码。

    【讨论】:

      【解决方案2】:

      问题在于这样的行:

      ord(num) -=13
      

      ord 是一个内置函数。您可以使用函数返回的值,但不能为函数赋值。

      你可以做的是:

      num = chr(ord(num) - 13)
      

      这可能无法解决您的问题,因为您还有其他错误,例如您试图添加到变量 z 而不在某处声明它。你应该在你的 for 循环之前声明它:

      z = ''
      for num in c:
      ...
      

      同时缩进一行

      z += chr(ord(num))
      

      所以它是 inside for 循环。你也可以做到:

      z += num
      

      因为 chr 和 ord 是反向函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-01
        • 2015-03-27
        • 1970-01-01
        • 2021-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多