语法错误:无法分配给运算符

问题描述 投票:0回答:7
def RandomString (length,distribution):
    string = ""
    for t in distribution:
        ((t[1])/length) * t[1] += string
    return shuffle (string)

这会返回标题中描述的语法错误。在此示例中,

distribution
是一个元组列表,每个元组包含一个字母及其分布,列表中的所有分布加起来为 100,例如:

[("a",50),("b",20),("c",30)] 

并且

length
是您想要的字符串的长度。

python syntax-error
7个回答
56
投票

确保变量没有连字符 (-)。

Python 中的变量名称中不允许使用连字符,连字符用作减法运算符。

示例:

my-variable = 5   # would result in 'SyntaxError: can't assign to operator'

22
投票

Python 会感到不安,因为你试图为无法赋值的东西赋值。

((t[1])/length) * t[1] += string

当您使用赋值运算符时,您将右侧的值分配给左侧的变量或元素。 在您的情况下,左侧没有变量或元素,而是一个解释值:您试图将一个值分配给不是“容器”的东西。

根据您所写的内容,您只是误解了该运算符的工作原理。 只需切换你的操作数,就像这样。

string += str(((t[1])/length) * t[1])

请注意,我已将分配的值包装在

str
中,以便将其转换为
str
,以便它与所分配的
string
变量兼容。 (数字和字符串不能相加。)


1
投票

您应该使用

((t[1])/length) * t[1] += string
,而不是
string  += ((t[1])/length) * t[1]
。 (另一个语法问题 -
int is not iterable
- 将是你要解决的练习。)


1
投票

嗯,正如错误所示,赋值的左侧有一个表达式 (

((t[1])/length) * t[1]
),而不是变量名。你有这个表达式,然后你告诉 Python 添加
string
(始终是
""
)并将其分配给...哪里?
((t[1])/length) * t[1]
不是变量名,因此您无法将结果存储到其中。

您的意思是

string += ((t[1])/length) * t[1]
吗?那会更有意义。当然,您仍在尝试将数字添加到字符串,或乘以字符串...其中一个
t[1]
可能应该是
t[0]


0
投票

我只能说 - 确保你的变量不包含空格,如果你需要单独使用下划线(_)。


-2
投票

您认为这应该是什么:

((t[1])/length) * t[1] += string

Python 无法解析这个,这是一个语法错误。


-8
投票

仅在Python中有效

a=4
b=3

i=a+b

我是新操作员

© www.soinside.com 2019 - 2024. All rights reserved.