Olá João,
Existe uma diferença do aninhamento das condições nas duas formas de se fazer, mas neste algoritmo ambos possuem a mesma funcionalidade e ambas deveriam funcionar corretamente. No seu caso, não sei qual o erro foi apresentado, mas muito provavelmente esteja relacionado com a indentação do código.
O python utiliza a indentação(espaçamento inicial) para criar os blocos de código a serem executados, assim, após uma estrutura condicional (if, else, elif) ou de repetição (for, while) ele executará as linhas de código que possuírem a MESMA indentação dentro da estrutura utilizada.
para exemplificar:
Exemplo da aula (correto):
idade_str = input("Digite sua idade: ")
idade = int(idade_str)
if (idade > 18):
print("Você é maior de idade.")
else:
if (idade < 12):
print("Você é uma criança.")
elif (idade > 12):
print("Você é um adolescente.")
Exemplo com erro de indentação:
idade_str = input("Digite sua idade: ")
idade = int(idade_str)
if (idade > 18):
print("Você é maior de idade.")
else:
if (idade < 12):
print("Você é uma criança.")
elif (idade > 12):
print("Você é um adolescente.")
Podemos ver que no segundo caso deixamos o if na mesma indentação do else, assim o código não irá rodar devido ao erro de indentação:
File "<string>", line 7
if (idade < 12):
^
IndentationError: expected an indented block
>
Para resumir, quando iniciar uma estrutura condicional, lembre-se sempre de adicionar uma tabulação para as linhas que serão executadas dentro do código, o mesmo vale caso tenha uma estrutura dentro de outra.
Não sei se foi esse exatamente o seu problema, mas caso não for, deixe a mensagem de erro, ou coloque o código para conseguirmos analisar
vlw tmj!