Em vez de:
def ask(question):
return True if input(question) == "y" else False
Poderia ser apenas:
def ask(question):
return input(question) == "y"
Pois o resultado do operador ==
é True
ou False
, então pode retornar o valor da expressão diretamente.
Mas tem uma diferença importante aí. No código original, ele verifica se o que foi digitado é "y" ou "n", e se for qualquer valor diferente disso ("a", "x", ou qualquer outra coisa), ele pede para digitar novamente.
Mas no seu código ele só pergunta uma vez e pronto. E se digitar qualquer coisa diferente de "y" (e que não necessarimente é "n"), ele considera que é False
.
Enfim, é uma diferença sutil, mas que muda o comportamento do programa. Claro que por ser um projeto pessoal sem requisitos bem definidos, não precisamos ser tão rígidos. Mas é importante saber que os códigos não são equivalentes.