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.


01.def engarrafa_a(litros):
02.    return "Com " + str(litros) + " litros pode encher "\
03.           +str(int(litros/1.5))+" garrafas, restando "+str(litros%1.5)+" litros"
04. 
05.def engarrafa_b(litros):
06.    return "Com %d  litros pode encher %.0f garrafas, restando %.2f litros" % (litros,int(litros/1.5), litros%1.5)
07. 
08.def engarrafa_c(litros):
09.    garrafas = int(litros/1.5)
10.    resto = litros%1.5
11.    return "Com %d  litros pode encher %.0f garrafas, restando %.2f litros" % (litros,garrafas,resto)
12. 
13.def engarrafa_d(litros):
14.    garrafas = int(litros/1.5)
15.    resto = litros%1.5
16.    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