Программа кассир

Суть программы: у нас есть касса, которая продает билеты в кино за 25$ и каждый человек покупает один билет и у него есть 25$/50$/100$ одной купюрой. Суть в том, что вводится список с количеством денег у всех покупателей в очереди и прога сама высчитывает хватит ли ей налички, чтобы со всеми расплатиться или нет.

Проблема в том, что почему-то крутиться бесконечный цикл.

def tickets(people):
text = "YES"
length = len (people)
i = 0

cash_count = {25 : 0, 50 : 0, 100 : 0}

while i < length and text == "YES":

    banknote = people [i]

    for key in cash_count.keys():

        if banknote == key:
            cash = cash_count [key] 
            cash_count [key] = cash + 1

    if banknote == 25:

        if cash_count [25] > 0:
            cash = cash_count [25]
            cash_count [25] = cash - 0

        else:
            text = "NO"

    elif banknote == 50:

        if cash_count [25] > 0:
            cash = cash_count [25]
            cash_count [25] = cash - 1

        else:
            text = "NO"

    elif banknote == 100:

        if cash_count [50] > 0 and cash_count [25] > 0:
            cash = cash_count [50]
            cash_count [50] = cash - 1

            cash = cash_count [25]
            cash_count [25] = cash - 1

        elif cash_count [25] > 2:
            cash = cash_count [25]
            cash_count [25] = cash - 3

        else:
            text = "NO"
    else:
        print ("В массиве введенно неверное значение купюры.")
        
return count

Тестил вот, так:

print (tickets([25, 25, 50]), "YES")
print (tickets([25, 100]), "NO")

Ответы (1 шт):

Автор решения: Эникейщик

Ну как бы проблема очевидна. Ни i, ни length не изменяют своего значения, поэтому программа все время работает с элементом people [0], не переходя к следующим.

→ Ссылка