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

时间:2012-01-21 21:25:41

标签: python syntax-error

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是你想要的字符串的长度。

6 个答案:

答案 0 :(得分:10)

Python很沮丧,因为您试图将值分配给无法赋值的内容。

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

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

根据您所写的内容,您只是误解了此运算符的工作原理。只需切换你的操作数即可。

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

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

答案 1 :(得分:1)

好吧,正如错误所说,你在作业的左侧有一个表达式(((t[1])/length) * t[1]),而不是变量名。你有那个表达式,然后你告诉Python向它添加string(总是"")并将其分配给... where? ((t[1])/length) * t[1]不是变量名,因此您无法将结果存储到其中。

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

答案 2 :(得分:0)

而不是((t[1])/length) * t[1] += string,您应该使用string += ((t[1])/length) * t[1]。 (另一个语法问题 - int is not iterable - 将是你要弄清楚的练习。)

答案 3 :(得分:0)

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

示例:

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

答案 4 :(得分:-2)

您认为这应该是什么:((t[1])/length) * t[1] += string

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

答案 5 :(得分:-6)

只在python中工作

a=4
b=3
i=a+b

我是新的运营商