Página 3 de 3 PrimeiroPrimeiro 123
+ Responder ao Tópico



  1. Pronto, transformei uma parte do código em outra função, declarei as quantidades de notas como global dentro da nova função e crieu um loop infinito que só para se for digitado 'q'.

    Código:
    Código :
    #!/usr/bin/env python
    #-*- coding: iso8859-1 -*-
     
     
    nota100 = 25
    nota50 = 100
    nota10 = 200
    nota5 = 80
    nota1 = 100
     
    def checaQtdeNota (ValorNota, qtdSaldoNota, saque, valorReservado):
            retorno = (saque - valorReservado) / ValorNota
     
            if (retorno > qtdSaldoNota):
                retorno = qtdSaldoNota
     
            return retorno;
     
    def realizarSaque(saque):
            global nota100
            global nota50
            global nota10
            global nota5
            global nota1
     
            saldo = (nota100*100) + (nota50*50) + (nota10*10) + (nota5*5) + (nota1)
            valorReservado = 0
     
            saque = int(saque)
            print ("Voce deseja retirar: R$"), saque
            #print 'saque é do tipo:', type(saque)
     
            if (saldo > saque):
                if (saque > valorReservado):
                    saqueNota100 = checaQtdeNota(100, nota100, saque, valorReservado)
                    print saqueNota100
                    valorReservado = valorReservado + (saqueNota100 * 100)
                    if (saque > valorReservado):
                            saqueNota50 = checaQtdeNota(50, nota50, saque, valorReservado)
                            valorReservado = valorReservado + (saqueNota50 * 50)
                    if (saque > valorReservado):
                            saqueNota10 = checaQtdeNota(10, nota10, saque, valorReservado)
                            valorReservado = valorReservado + (saqueNota10 * 10)
                    if (saque > valorReservado):
                            saqueNota5 = checaQtdeNota(5, nota5, saque, valorReservado)
                            valorReservado = valorReservado + (saqueNota5 * 5)
                    if (saque > valorReservado):
                            saqueNota1 = checaQtdeNota(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 ("Saque de ", saque, "efetuado.")
                    else:
                            saque = 0
                            print ("Nao ha notas suficientes para o saque.")
            else:
                   saque = 0
                   print ("Nao ha dinheiro suficiente para o saque")
     
            saldo = saldo - saque
            print ("Situacao atual: | "),
            print nota100, (" | "),
            print nota50, (" | " ),
            print nota10, (" | "),
            print nota5, (" | "),
            print nota1, (" | "),
            print saldo, (" | ")
     
            saque = 0
     
    while(True):
            saque = raw_input("Digite o valor do saque (digite 'q' para sair): ")
            if saque == 'q':
                    break
            realizarSaque(saque)
            print '\n'
    print 'Obrigado por usar o terminal de saque do Terry!'

    Teste de output:
    Código :
    >>> 
    Digite o valor do saque (digite 'q' para sair): 123
    Voce deseja retirar: R$ 123
    1
    ('Saque de ', 123, 'efetuado.')
    Situacao atual: |  24  |  100  |  198  |  80  |  97  |  9877  | 
     
     
    Digite o valor do saque (digite 'q' para sair): 216
    Voce deseja retirar: R$ 216
    2
    ('Saque de ', 216, 'efetuado.')
    Situacao atual: |  22  |  100  |  197  |  79  |  96  |  9661  | 
     
     
    Digite o valor do saque (digite 'q' para sair): 2112
    Voce deseja retirar: R$ 2112
    21
    ('Saque de ', 2112, 'efetuado.')
    Situacao atual: |  1  |  100  |  196  |  79  |  94  |  7549  | 
     
     
    Digite o valor do saque (digite 'q' para sair): q
    Obrigado por usar o terminal de saque do Terry!

  2. Pois é.

    Essa da identação descobri por acidente. Fiquei imaginando um tempão como que o Python reconhecia um bloco de comando dentro de um if ou while, e só quando errei uma tentativa while, percebi que ele especifica o bloco pela identação. Idéia bem interessante essa.

    Valeu



  3. Citação Postado originalmente por Terry Ver Post
    Pois é.

    Essa da identação descobri por acidente. Fiquei imaginando um tempão como que o Python reconhecia um bloco de comando dentro de um if ou while, e só quando errei uma tentativa while, percebi que ele especifica o bloco pela identação. Idéia bem interessante essa.

    Valeu
    O criador do Python, Guido Van Rossum, diz que criou o Python desse jeito pra forçar os programadores a manterem seus códigos organizados e com fácil entendimento. Pensando nisso Tim Peters (um dos colaboradores) criou o Zen of Python: PEP 20 -- The Zen of Python

    Tem até um documento de padrões 'Pythonianos' para o código: PEP 8 -- Style Guide for Python Code . Ele tenta padronizar essa questão de utilizar tabs ou espaços, se deve utilizar ou não espaço entre os parênteses, colchetes e chaves, como fazer imports... entre outras as coisas. Vale a pena ler.

    Acho que por esses e outros motivos não chamam quem programa em Python de "Programador Python" e sim Pythonista, tem toda uma filosofia por traz da linguagem. É quase uma 'seita'... Hehehehe

  4. Magnum.

    Misturei o seu while com o meu código e ficou assim:

    Código :
    #!/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

    Não conseguia implementar o while porque não sabia do break, hehe.

    Valeu cara pela ajuda, grande troca de conhecimento hoje.



  5. Disponha, sempre que precisar estamos ai!

    Tem um livro on line muito bom sobre python chamado "A Byte of Python". Tem uma tradução dele aqui: Tutorial (Português) | pythonlanguage.com- Programação Python
    A versão original pode ser baixada aqui: http://www.ibiblio.org/swaroopch/byteofpython/files/120/byteofpython_120.pdf

    Tem outros muito bons também, mas esse é um bom começo!

    Até mais...






Tópicos Similares

  1. Dúvidas sobre criação de domínios
    Por Leo-SP no fórum Linguagens de Programação
    Respostas: 2
    Último Post: 16-12-2004, 07:06
  2. Dúvida sobre gerenciador de impressão!!!
    Por brunosal no fórum Servidores de Rede
    Respostas: 3
    Último Post: 29-11-2004, 07:49
  3. Opniao sobre compartilhadores de internet com wireless
    Por Rodrigo Moreno no fórum Redes
    Respostas: 8
    Último Post: 27-09-2004, 12:15
  4. Duvida sobre interfaces de rede.
    Por MAJOR no fórum Servidores de Rede
    Respostas: 0
    Último Post: 10-04-2004, 18:10
  5. duvida sobre redes de acesso
    Por no fórum Servidores de Rede
    Respostas: 0
    Último Post: 12-02-2004, 00:44

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L