syntax-error:无法分配给运算符

The*_*oxx 11 python syntax-error

def RandomString (length,distribution):
    string = ""
    for t in distribution:
        ((t[1])/length) * t[1] += string
    return shuffle (string)
Run Code Online (Sandbox Code Playgroud)

这将返回标题中描述的语法错误.在这个例子中,distribution是一个元组列表,每个元组包含一个字母及其分布,列表中的所有分布总计为100,例如:

[("a",50),("b",20),("c",30)] 
Run Code Online (Sandbox Code Playgroud)

并且length是您想要的字符串的长度.

Anu*_*pam 36

如果它对某人有帮助,如果您的变量中包含连字符,您可能会看到此错误,因为 Python 中的变量名称中不允许使用连字符,并且将其用作减法运算符。

例子:

my-variable = 5   # would result in 'SyntaxError: can't assign to operator'
Run Code Online (Sandbox Code Playgroud)


che*_*ken 12

Python很难过,因为您试图将值分配给无法赋值的内容.

((t[1])/length) * t[1] += string
Run Code Online (Sandbox Code Playgroud)

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

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

string += str(((t[1])/length) * t[1])
Run Code Online (Sandbox Code Playgroud)

请注意,我已将指定的值包装起来str,以便将其转换为a,str以便与string要分配的变量兼容.(数字和字符串不能一起添加.)