Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida sobre retorno de uma função

Beleza Galera. Estou fazendo uns exercícios de revisão sobre funções. A ideia do exercício é imprimir uma lista de n termos e n linhas com esse formato:

1

1 2

1 2 3

1 2 3 4

1 2 3 4 ... n

Eu implementei esse código:

def imprimeLinha(n):
    for n in range(1, n + 1):
        print(('  {} ').format(n), end='')


def imprimeSequencia(numero):
    for numero in range(numero + 1):
        print(imprimeLinha(numero))


numero = input('digite um numero: ')
imprimeSequencia(int(numero))

Porém o mesmo imprime o termo None no final de cada linha. Não consegui identificar de onde esse None vem. Poderiam me dar uma mão?

1 None

1 2 None

1 2 3 None...

2 respostas
solução!

Olá Vinícius, tudo bem com você?

Ótima pergunta :)

Na verdade ela vem dessa função:

def imprimeLinha(n):

Se você for ver o que estamos devolvendo? A cada iteração fazemos um print, mas não retornamos um número, uma string, ou coisa do tipo, devolvemos "Nada" no final da execução :)

Para você ter certeza podemos fazer um:

def imprimeLinha(numero):
    for n in range(1, numero + 1):
        print(('  {} ').format(n), end='')
    return "E agora?";

E teremos como retorno:

digite um numero: 5
E agora?
  1 E agora?
  1   2 E agora?
  1   2   3 E agora?
  1   2   3   4 E agora?
  1   2   3   4   5 E agora?

A questão é que na verdade na segunda função:

def imprimeSequencia(numero):
    for numero in range(numero + 1):
        print(imprimeLinha(numero))

Não queremos dar um print no que devolve a função imprimeLinha, só queremos executar :)

Mas se você tirar o print vai ver que não ficara mais com esse aspecto de escadinha, para corrigir isso, depois do for fazer os prints temos que adicionar um novo print() apenas para quebrar a linha :)

def imprimeLinha(numero):
    for n in range(1, numero + 1):
        print(('  {} ').format(n), end='')
    print()

def imprimeSequencia(numero):
    for numero in range(numero + 1):
        imprimeLinha(numero)

Conseguiu Compreender?

Abraços e Bons Estudos!

Muito Obrigado Geovani. Tava quebrando a cabeça e não tinha pensado no retorno da primeira função para a segunda. Ajudou demais, e bora estudar...