Página 1 de 3 123 ÚltimoÚltimo
+ Responder ao Tópico



  1. Alô galera.

    Estou estudando um pouco de python e encontrei um exercício bacana para praticar que consta apenas de se controlar o saque de um caixa eletrônico.
    O exercício exige que se crie uma função que receba como parâmetro um número inteiro representando o valor solicitado para saque num caixa eletrônico, e em seguida, sabendo que o caixa está alimentado com notas de 1, 5, 10, 50 e 100 reais, calcule e escreva quantas notas de cada valor serão necessárias para atender a solicitação de saque.
    Acabei por fazer uma esboço assim:

    #!/usr/bin/env python
    #-*- coding: iso8859-1 -*-

    nota100 = 25;
    nota50 = 100;
    nota10 = 200;
    nota5 = 80;
    nota1 = 100;

    saldo = (nota100*100) + (nota50*50) + (nota10*10) + (nota5*5) + (nota1);
    valorReservado = 0;

    saque = raw_input("Digite o valor do saque: ");
    print ("Voce deseja retirar: R$"), saque;

    if (saldo > saque):
    if (saque > valorReservado):
    saqueNota100 = checaQtdeNota(100, nota100, saque, valorReservado);
    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

    def checaQtdeNota (ValorNota, qtdSaldoNota, saque, valorReservado):
    retorno = (saque - valorReservado) / valorNota;

    if (retorno > qtdSaldoNota):
    retorno = qtdSaldoNota;

    return retorno;


    Infelizmente não estou muito bem familiarizado com a estruturação dos if, elif e else, e também não sei se a função deve ser declarada no início ou no final do código. Como conseqüência os testes dos if não estão ocorrendo.

    Alguém consegue me informar onde estou errando?

    Valeu

  2. Cara, não entendi muito seu código pq ele perdeu toda a identação... Posta ai que eu te dou uma ajuda!



  3. Ah, acho que descobri seu problema.... Executa o seguinte código:

    Código :
    #!/usr/bin/env python
    #-*- coding: iso8859-1 -*-
     
    nota100 = 25;
    nota50 = 100;
    nota10 = 200;
    nota5 = 80;
    nota1 = 100;
     
    saldo = (nota100*100) + (nota50*50) + (nota10*10) + (nota5*5) + (nota1);
    valorReservado = 0;
     
    saque = raw_input("Digite o valor do saque: ");
    print "Voce deseja retirar: R$", saque;
     
    print 'saque é do tipo:', type(saque)

    Você vai ver que ele vai mostrar que saque é na verdade uma string por isso os ifs não devem estar funcionando. Converte a string saque para int.

    Código :
    #!/usr/bin/env python
     #-*- coding: iso8859-1 -*-
     
     nota100 = 25;
     nota50 = 100;
     nota10 = 200;
     nota5 = 80;
     nota1 = 100;
     
     saldo = (nota100*100) + (nota50*50) + (nota10*10) + (nota5*5) + (nota1);
     valorReservado = 0;
     
     saque = raw_input("Digite o valor do saque: ");
     
    try:
        int(saque)
    except:
        print 'Por favor digite um valor numérico.'
        exit()
     
    saque = int(saque)
     
    print 'saque é do tipo:', type(saque)
     
     print "Voce deseja retirar: R$", saque;

  4. Magnum.

    Pior que era isso mesmo. Falha minha, mas acreditava ter entendido que o Python ajustava o tipo da variável conforme o valor que fosse aplicado.

    Passou agora tranquilo, só não está reconhecendo minha função agora. A função deve ser declarada no início do programa?

    Tentando postar com a identação correta:
    Código :
    #!/usr/bin/env python
    #-*- coding: iso8859-1 -*-
     
    nota100 = 25;
    nota50 = 100;
    nota10 = 200;
    nota5 = 80;
    nota1 = 100;
     
    saldo = (nota100*100) + (nota50*50) + (nota10*10) + (nota5*5) + (nota1);
    valorReservado = 0;
     
    saque = raw_input("Digite o valor do saque: ");
    print ("Voce deseja retirar: R$"), saque;
     
    saque = int(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
     
    def checaQtdeNota (ValorNota, qtdSaldoNota, saque, valorReservado):
            retorno = (saque - valorReservado) / valorNota;
     
            if (retorno > qtdSaldoNota):
                retorno = qtdSaldoNota;
     
            return retorno;

    Valeu.



  5. Muito Legal!!!






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