1. ホーム
  2. その他

[解決済み】SyntaxError: 演算子に代入することができない

2022-01-17 04:45:49

質問

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

これは、タイトルにあるように、シンタックスエラーを返します。この例では SyntaxError: cannot assign to operator はタプルのリストで、各タプルは文字とその分布を含み、リストの分布はすべて足して100になります、例えば、次のようになります。

distribution

そして {コード は欲しい文字列の長さです。

解決方法は?

Pythonが怒っているのは、値を割り当てられないものに値を割り当てようとしているためです。

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

代入演算子を使うと、右側にあるものの値を、左側の変数や要素に代入することになります。 この場合、左側には変数も要素もなく、代わりに解釈された値があります。つまり、「容器」ではないものに値を代入しようとしているのです。

あなたが書いたものからすると、この演算子がどのように機能するかを誤解しているだけでしょう。 オペランドを入れ替えるだけで、こんな風になります。

length

なお、代入された値を ((t[1])/length) * t[1] += string に変換するために string += str(((t[1])/length) * t[1]) と互換性があるように str 変数に代入されます。 (数字と文字列の足し算はできません)。