Bom Dia! No post anterior eu propus um problema que consistia em escrever um modulo para converter temperaturas entre graus Celsius e graus Fahrenheit. Hoje vou postar uma solucao. Vejamos abaixo: # coding: utf-8# conversor.pydef celsius_para_fahr(graus): # a formula pode ser encontrada em: # http://www.albireo.ch/temperatureconverter/formula.htm graus_fahr = graus * 9.0 / 5.0 + 32.0 return graus_fahrPara testarmos nosso modulo, vamos escrever um outro modulo: "testa_conversor.py"# !/bin/env python# coding: utf-8# testa_conversor.pyimport conversordef testes(): pares = [(0.0, 32.0), (100.0, 212.0), (32.0, 89.6), (38.0, 100.4), (20.0, 68.0)] for celsius, fahr in pares: calculado = conversor.celsius_para_fahr(celsius) if calculado != fahr: print "A funcao retornou um resultado inesperado na conversao do valor:", celsius print "O resultado esperado era:", fahr, " e o calculado foi:", calculado else: print "OK!"if __name__ == '__main__': testes() No modulo de teste inclui mais alguns detalhes que merecem uma explicacao mais detalhada. No final do modulo podemos ver um "if" que testa de a variavel "__name__" e igual a string "__main__" e, caso seja, chama a funcao "testes()". Nao, isto nao e magia negra... Acontece que em Python, algumas variaveis especiais sao definidas pelo interpretador no momento que este importa o modulo. Neste caso, a variavel "__name__" sera definida como a string "__main__" quando o modulo for o mesmo que foi passado na linha de comando para execucao, ou seja, quando executamos: python testa_conversor.py. Outro detalhe e que definimos uma lista de tuplas com as temperaturas que queremos testar e utilizamos esta lista no "for". Como o "for" retorna cada elemento da lista utilizada e, neste caso, cada elemento e uma tupla que contem dois elementos, podemos tirar vantagem do "desempacotamento automatico" que a linguagem nos oferece, atribuindo cada elemento da tupla a uma variavel. Ou seja, no primeiro passo da iteracao "for", a variavel "celsius" recebera o valor do primeiro elemento da tupla e a variavel "fahr" recebera o valor do segundo elemento da tupla, que sao 0.0 e 32.0, respectivamente. Isto facilita em muito a codificacao e da um poder especial ao "for". Outra coisa que nao expliquei em posts anteriores e o funcionamento do comando "if". Tal comando funciona para a execucao condicional de um bloco de operacoes. Ele testa uma condicao e, caso esta retorne um valor que possa ser avaliado como "verdadeiro", o primeiro bloco do "if" e executado. No comando "if", opcionalmente, podemos especificar um segundo bloco de operacoes que deve ser executado caso a condicao seja avaliada como "falsa". Isto pode ser realizado atraves do "else". Existe ainda uma terceira operacao, o "elif", mas vou deixar para explicar o funcionamento deste num post futuro. Bom pessoal, e isto! Ainda esta semana publico mais um post do nosso tutorial! Ola! E hora de conferir a solucao do exercicio e do desafio. Primeiro vamos ao exercicio: escrever um modulo com duas funcoes que calculam o fatorial de um numero, sendo uma recursiva e a outra linear: # coding: utf-8# fatorial.pydef fatorial_recursivo(numero): if numero == 1: return 1 return numero * fatorial_recursivo(numero - 1)def fatorial_linear(numero): k = numero - 1 fatorial = numero while k > 0: fatorial =