2012-01-21 34 views
5
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はの長さでありますあなたが望む文字列。

答えて

9

値を割り当てることができないものに値を割り当てようとしているため、Pythonが動揺しています。

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

代入演算子を使用するときは、右側の値を左側の変数または要素に割り当てます。あなたのケースでは、左側に変数や要素はありませんが、代わりに解釈された値があります。「コンテナ」以外の値に値を代入しようとしています。

あなたが書いたことに基づいて、この演算子の仕組みを誤解しているだけです。そのようにオペランドを切り替えるだけです。私はそれはそれはに割り当てられているstring変数と互換性があるようにstrに変換するために、strに割り当てられた値を包みました

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

注意。

+0

それは私に型エラーを与えるTypeError:暗黙のうちに '浮動小数点型'オブジェクトをstrに変換できない アイデア? – TheFoxx

+0

はい。しかし、それはあなたが 'string'をどのように見せたいかによって異なります。あなたが提供した入力例に基づいて、 'string'の値がどのようなものであるべきかを詳しく述べてください。私はあなたが探しているものを推測して私の答えを修正しました。 – cheeken

-3

あなたはこれをすることになっているどう思いますか:Pythonはこれを解析することはできません((t[1])/length) * t[1] += string

、それは構文エラーです。

+0

まあ実際にこれをすることを意味、私はちょうどrelised((T [1]/10)/長さ)* t [1]基本的に、各文字の配達を取って、その文字を無作為な文字列にする必要がある回数を計算し、空文字列に多くの文字を追加すると、文字列 – TheFoxx

+0

@ user1048244:それは関係ない書かれているように、それは構文上有効ではありません。 – Marcin

0

((t[1])/length) * t[1] += stringの代わりにstring += ((t[1])/length) * t[1]を使用してください。

+0

私はそれを試してみました。TypeError: 'float'オブジェクトを暗黙的にstrに変換することはできません – TheFoxx

+0

ヒント:Pythonのfor文でその意味では 'distribution'を使うことはできません。あなたの流通の「範囲」はおそらく適切でしょう...? – Makoto

1

エラーが示すように、変数名ではなく、割り当ての左側に式(((t[1])/length) * t[1])があります。あなたはその式を持っています。そして、Pythonにstring(これは常に""です)を追加し、それに...をどこに割り当てるかを教えてください。 ((t[1])/length) * t[1]は変数名ではないため、結果を格納することはできません。

string += ((t[1])/length) * t[1]を意味しましたか?それはもっと理にかなっています。もちろん、あなたはまだ文字列に数値を追加しようとしているか、文字列を乗算しようとしています... t[1]のうちの1つはおそらくt[0]です。

Pythonで
+0

はい、私のコードは通常このエラーでいっぱいではありません。iveはこれを10回繰り返しただけです。 – TheFoxx

-4

のみ動作し、私は新しい演算子

ある

a=4 
b=3 

i=a+b 

関連する問題