2017-01-09 5 views
0

私は、money == 100の場合は配列内の項目に1を加え、そうでない場合は別の項目に1を加えることで、Pythonで三項演算を実行しようとしています。しかし、私は無効な構文エラーを取得し続けます。整数を追加するPython三項演算子

bills[2] += 1 if money == 100 else bills[1] += 1 
              ^
SyntaxError: invalid syntax 

ここにコードがあります。

def tickets(people): 
change =0 
bills = [0,0,0] 
for i,money in enumerate(people): 
    if money == 25: 
     change += 25 
     bills[0] += 1 
     str = "This is the %d th person with %d money" % (i,money) 
     print(str) 

    else: 
     bills[2] += 1 if money == 100 else bills[1] += 1 
     change -= (money -25) 
     str = "This is the %d th person with %d money" % (i,money) 
     print(str) 
     print("change is %d" % change) 

if change < 0: 
    return "NO" 
else: 
    return "YES" 
+0

else部分の 'bill [2]'に 'bills [1] + 1'を追加しますか? – letmutx

答えて

5

あなたは表現内部を置くことはできません。 +=(代入)はステートメントです。ステートメントの特定の部分(式の右辺のような部分)内でのみ式を使用できます。

あなたここで条件式を使用していますが、に割り当てるものを指標選ぶためにそれを使用することができます:

bills[2 if money == 100 else 1] += 1 

割り当て対象で[...]サブスクリプションの内側部分は、発現がかかるため、これが動作します。

+0

非常に良い、ありがとう! – Oxymoron88

+0

ゴッチャは本当にありがとう! –

+0

@EdoziéIzegbu:助けてくれてうれしい!あなたがそれが役に立ったと思ったら、[私の答えを受け入れる](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)を自由に感じてください。 :-) –