domingo, 6 de dezembro de 2009

Problema 8.8

Num post anterior apresentámos a solução para o problema 8.7. Chamámos a função principal hang87. Com base nisso vamos mostrar a solução para este problema.


def hang88():
print 'Vamos jogar!'
jogar = True
while jogar:
hang87()
mais= raw_input('Jogar mais? [S/N]: ')
if mais == 'N':
print 'Adeus, até à vista...'
jogar = False

Como se pode ver não alterámos o nosso programa principal. Apenas definimos um programa envolvente (os ingleses chamam-lhe wrapper). Claro que esta solução é muito simplista, e pressupõe que tudo o que não for N significa que se quer continuar a jogar. Mas podemos melhorar a solução.

def hang88b():
print 'Vamos jogar!'
jogar = True
while jogar:
jogar = continuar(jogar)

def continuar(jogar):
mais = raw_input('mais? [S/N]: ')
while mais not in ['S','N', 's','n','sim','não']:
mais = raw_input('A resposta tem que ser [S/N]. A sua resposta: ')
if mais in ['N','n','não']:
print 'Adeus, até à vista...'
jogar = False
return jogar


Deixamos ao leitor a tarefa de fazer à sua maneira. A moral desta solução era apenas a de que não foi preciso alterar o nosso programa principal.


Ao longo da vida de um programador a tarefa mais comum é ter que manter um programa, seja devido a erros seja devido a alterações na especificação. Quanto melhor tiver sido construído o nosso programa, mais fácil serão estas tarefas!

Sem comentários:

Enviar um comentário