Python "невозможно назначить вызову функции" - PullRequest
1 голос
/ 31 января 2020

Мне очень жаль задавать этот вопрос, так как он задавался несколько раз ранее, но, поскольку я абсолютный новичок в python, я не понимаю основную проблему и поэтому не могу применить эту концепцию к мой собственный код В этих нескольких строках я попытался создать функцию, которая показывает все гласные, содержащиеся в строке. во втором для l oop, где я хотел сделать строку из списка l, он выдал ошибку «невозможно назначить вызову функции», когда я попытался выбрать конкретный элемент c из списка , Я был бы очень благодарен, если бы кто-то мог сказать мне, как решить эту проблему и объяснить, что именно означает эта синтаксическая ошибка. `

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)

`

Ответы [ 2 ]

5 голосов
/ 31 января 2020

Как говорит ошибка, вы не можете назначить вызов функции. Если по какой-либо причине вы не хотите просто писать l[i] += x, вам также придется явно вызывать метод __iadd__.

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

Однако, поскольку ' ' += x также недопустимо Я подозреваю, что вы просто меняете операнды. Код должен быть

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

, но весь этот l oop более правильно (и эффективно) заменен вызовом метода join:

x = ' '.join(l)
1 голос
/ 31 января 2020

Давайте возьмем утверждение:

i + = 1

Это сокращение для

i = i + 1

В этих утверждениях я переменная. Это значение увеличивается на 1 и переназначается на i. То же самое нельзя сделать с помощью вызова функции. Это не переменная.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...