#!/usr/bin/env python
#-*- coding: iso8859-1 -*-
 
#definição da função
def CalculaNotas(ValorNota, qtdSaldoNota, saque, valorReservado):
        retorno = (saque - valorReservado) / ValorNota
 
        if (retorno > qtdSaldoNota):
            retorno = qtdSaldoNota
 
        return retorno;
 
#variáveis (valores atribuídos)
nota100 = 25
nota50 = 100
nota10 = 200
nota5 = 80
nota1 = 100
 
valorReservado = 0
 
saqueNota100 = 0
saqueNota50 = 0
saqueNota10 = 0
saqueNota5 = 0
saqueNota1 = 0
 
#saldo suposto total de grana na máquina 
saldo = (nota100*100) + (nota50*50) + (nota10*10) + (nota5*5) + (nota1)
 
#Aqui poderia ser empregado um while para escolha de opções, e para continuar a decrementar o caixa
 
while(True):
        saque = raw_input("Digite o valor do saque (digite 'q' para sair): ")
        if saque == 'q':
                break
 
    #Entrada do usuário
    #saque = raw_input("Digite o valor do saque: ")
    saque = int(saque)
    print ("Voce deseja retirar: R$"), saque
 
    #testes
    if (saldo >= saque):
        if (saque > valorReservado):
            saqueNota100 = CalculaNotas(100, nota100, saque, valorReservado)
            valorReservado = valorReservado + (saqueNota100 * 100)
        if (saque > valorReservado):
            saqueNota50 = CalculaNotas(50, nota50, saque, valorReservado)
                   valorReservado = valorReservado + (saqueNota50 * 50);
               if (saque > valorReservado):
                   saqueNota10 = CalculaNotas(10, nota10, saque, valorReservado)
                   valorReservado = valorReservado + (saqueNota10 * 10);
               if (saque > valorReservado):
                   saqueNota5 = CalculaNotas(5, nota5, saque, valorReservado)
                   valorReservado = valorReservado + (saqueNota5 * 5);
               if (saque > valorReservado):
                   saqueNota1 = CalculaNotas(1, nota1, saque, valorReservado)
                   valorReservado = valorReservado + (saqueNota1 * 1)
               if (valorReservado == saque):
            nota100 = nota100 - saqueNota100
                   nota50 = nota50 - saqueNota50
                   nota10 = nota10 - saqueNota10
                   nota5 = nota5 - saqueNota5
                   nota1 = nota1 - saqueNota1;
            print ("")
                   print ("Saque de R$"), saque, ("efetuado."), ("Foram necessárias"), saqueNota100, ("nota(s) de 100,"), saqueNota50, ("nota(s) de 50,"), saqueNota10, ("nota(s) de 10,"), saqueNota5, ("nota(s) de 5,"), ("e"), saqueNota1, ("nota(s) de 1")
               else:
                       saque = 0;
            print ("")
                       print ("Nao ha notas suficientes para o saque.")
    else:
        saque = 0;
        print ("")
        print ("Nao ha dinheiro suficiente para o saque")
 
    #relatório final
    saldo = saldo - saque
    print ("")
    print ("Situacao atual: | "),
    print ("Notas de 100: "), nota100, (" | "),
    print ("Notas de 50: "), nota50, (" | " ),
    print ("Notas de 10: "), nota10, (" | "),
    print ("Notas de 5: "), nota5, (" | "),
    print ("Notas de 1: "), nota1, (" | "),
    print ("Saldo: "), saldo, (" | ")
 
    saque = 0