domingo, 1 de novembro de 2009

Problema 5.4

Este problema aparece apenas para chamar a atenção para a formatação de saída envolvendo cadeias de caracteres. Vejamos quatro soluções possíveis para a questão.



def engarrafa_a(litros):
return "Com " + str(litros) + " litros pode encher "\
+str(int(litros/1.5))+" garrafas, restando "+str(litros%1.5)+" litros"

def engarrafa_b(litros):
return "Com %d litros pode encher %.0f garrafas, restando %.2f litros" % (litros,int(litros/1.5), litros%1.5)

def engarrafa_c(litros):
garrafas = int(litros/1.5)
resto = litros%1.5
return "Com %d litros pode encher %.0f garrafas, restando %.2f litros" % (litros,garrafas,resto)

def engarrafa_d(litros):
garrafas = int(litros/1.5)
resto = litros%1.5
return "Com {0} litros pode encher {1:.0f} garrafas, restando {2:.2f} litros".format(litros,garrafas,resto)


A solução a é a clássica, quando não se sabe muito sobre formatação de cadeias de caracteres. Usa a operação de concatenação (+), e obriga a muitas conversões de tipos decididas explicitamente pelo programador. A segunda, b, já avança um bom bocado, precisamente porque usa o operador de formatação %. Note-se que no interior da cadeia o sinal % é um sinal de formatação. Na alternativa c, limitamo-nos a tornar o código mais legível introduzindo as duas variáveis locais garrafas e resto. Finalmente, a solução d é a mais moderna do ponto de vista de Python, socorrendo-se do método format. Esta possibilidade existe a partir da versão 2.6 de Python e deve ser a preferida.

Sem comentários:

Enviar um comentário