1

我非常抱歉问这个问题,因为之前已经多次问过这个问题,但是因为我是 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)

`

4

2 回答 2

5

正如错误所说,您不能分配给函数调用。如果出于某种原因,您不想简单地 write 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)
于 2020-01-31T14:20:13.897 回答
1

让我们采取声明:

我 += 1

这是简写

我 = 我 + 1

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

于 2020-01-31T14:24:51.430 回答