【问题标题】:Python "cannot assign to funtion call"Python“无法分配给函数调用”
【发布时间】:2020-01-31 14:15:00
【问题描述】:

非常抱歉问这个问题,因为之前已经被问过多次,但是因为我是 python 的绝对初学者,所以我不理解潜在的问题,因此无法将这个概念应用于我自己代码。在这几行中,我尝试创建一个函数来显示字符串中包含的所有元音。 在第二个 for 循环中,我想从列表 l 中创建一个字符串,当我尝试从列表中挑选特定项目时,它给了我错误“无法分配给函数调用”。 如果有人能告诉我如何解决这个问题并解释这个语法错误的确切含义,我将非常感激。 `

word = str(input())
vowels = ['a','e','i','o','u']
l = []
x = ''
for i in word:
    if i in vowels:
        if i not in l:
            l.append(i)
for i in v:
    l.__getitem__(i) += x #cannot assign to function call
    ' ' += x
print(x)

`

【问题讨论】:

  • 什么是 v ?你还没有分配它
  • v 变量在哪里?
  • 你为什么打电话给__getitem__而不是写l[i] += x
  • 除了提出的其他 cmets 之外,最好不要在代码中使用 il 作为变量。它们很难区分,并且(传统上)要避免。

标签: python list syntax


【解决方案1】:

正如错误所说,您不能分配给函数调用。如果出于某种原因,您不想简单地编写 l[i] += x,则还必须显式调用 __iadd__ 方法。

for i in v:
    l.__getitem__(i).__iadd__(x)

但是,由于 ' ' += x 也是非法的,我怀疑您只是在反转操作数。代码应该是

for i in v:
    x += l[i]
    x += ' '

但整个循环更恰当(和有效)替换为调用join 方法:

x = ' '.join(l)

【讨论】:

    【解决方案2】:

    让我们来看看声明:

    i += 1

    这是

    的简写

    i = i + 1

    在这些语句中,i 是一个变量。它的值递增 1 并重新分配给 i。函数调用无法做到这一点。它不是一个变量。

    【讨论】:

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