我非常抱歉问这个问题,因为之前已经被问过多次,但因为我是 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)
Run Code Online (Sandbox Code Playgroud)
`
正如错误所说,您不能分配给函数调用。如果出于某种原因,您不想简单地 write l[i] += x,则还必须__iadd__显式调用该方法。
for i in v:
l.__getitem__(i).__iadd__(x)
Run Code Online (Sandbox Code Playgroud)
但是,这' ' += x也是非法的,我怀疑您只是在反转操作数。代码应该是
for i in v:
x += l[i]
x += ' '
Run Code Online (Sandbox Code Playgroud)
但是这整个循环更恰当地(和有效地)替换为对join方法的调用:
x = ' '.join(l)
Run Code Online (Sandbox Code Playgroud)