#
# é possível declarar uma função no código de outra função
#
# o código a seguir exemplifica essa possibilidade
#
def media_harmonica ( a , b ) :
# numero é nulo?
def nulo ( numero ) :
if ( numero == 0.0 ) :
return True
if ( numero == 0 ) :
return True
return False
# qual é o reverso de número?
def reverso_de ( numero ) :
if nulo ( numero ) :
return 0.0
return 1.0 / numero
# qual é a média harmônica dos números <a> e <b>?
def media ( a , b ) :
a_reverso = reverso_de ( a )
b_reverso = reverso_de ( b )
soma = a_reverso + b_reverso
soma_reverso = reverso_de ( soma )
dobro = 2.0 * soma_reverso
return dobro
# em quais circunstâncias e como obter a media?
def alternativas ( a , b ) :
if nulo ( a ) :
return 0.0
if nulo ( b ) :
return 0.0
return media ( a , b )
# qual é a média harmônica dos números <a> e <b>?
return alternativas ( a , b )
# fim da funcão
#
# ecoar retorno da função para testar seu funcionamento
#
#
# teste 01
#
a = 0
b = 0
print ( f'media_harmonica ( { a } , { b } ) = { media_harmonica ( a , b ) } ')
#
# teste 02
#
a = 0
b = 999
print ( f'media_harmonica ( { a } , { b } ) = { media_harmonica ( a , b ) } ')
#
# teste 03
#
a = 999
b = 0
print ( f'media_harmonica ( { a } , { b } ) = { media_harmonica ( a , b ) } ')
#
# teste 04
#
a = 999
b = 999
print ( f'media_harmonica ( { a } , { b } ) = { media_harmonica ( a , b ) } ')
# A escrita realizada pela execução do código é:
media_harmonica ( 0 , 0 ) = 0.0
media_harmonica ( 0 , 999 ) = 0.0
media_harmonica ( 999 , 0 ) = 0.0
media_harmonica ( 999 , 999 ) = 999.0