2017-01-09 3 views
0

Я пытаюсь сделать тройную операцию в python, добавив 1 к элементу в массиве, если деньги == 100 и добавление 1 к другому элементу, если это не так. Но я продолжаю получать недопустимую синтаксическую ошибку.Терминальный оператор 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

Вы хотите добавить 'bills [1] + 1' в' bills [2] 'в другой части? – letmutx

ответ

5

Вы не можете поставить заявления внутри выражений. += (присвоение) - это заявление. Вы можете использовать выражения только в определенных частях инструкции (например, в правой части задания).

Вы может использовать условное выражение здесь, но использовать его, чтобы выбрать то, что индекс для назначения:

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

Это работает, потому что часть внутри [...] подписки в целеуказании также принимает выражение.

+0

очень приятно, спасибо! – Oxymoron88

+0

Gotcha благодарит! –

+0

@ EdoziéIzegbu: Рад помочь! Не стесняйтесь [принять мой ответ] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work), если вы считаете, что это было полезно для вас. :-) –

Смежные вопросы