Primeira vez aqui? Seja bem vindo e cheque o FAQ!
x

Ajuda com return de funções python

+1 voto
31 visitas
perguntada Abr 5 em Programação Computacional por Pedroooo (6 pontos)  

Por que esse meu código retorna "None"? Se eu pedir um "print" no mesmo "if" em que está o "return" ele imprime o valor correto, mas retornar ele não retorna

numero=int(input("Digite um número inteiro:"))
divisor=2
primo=True
def pr(numero,divisor,primo):
    while divisor<numero and primo:
        if numero%divisor==0:
            primo=False
        divisor=divisor+1
    if primo and numero!=1:
        return numero
    else:
        divisor=2
        primo=True
        numero=numero-1
        pr(numero,divisor,primo)
print (pr(numero,divisor,primo))

E esse outro retorna "numero-1" em vez de retornar o valor atual de "numero", que, no caso do primeiro número coletado ser 100, seria 97, um número primo ?

numero=int(input("Digite um número inteiro:"))
divisor=2
primo=True
def pr(numero,divisor,primo):
    while divisor<numero and primo:
        if numero%divisor==0:
            primo=False
        divisor=divisor+1
    if primo and numero!=1:
        return numero
    else:
        divisor=2
        primo=True
        numero=numero-1
        pr(numero,divisor,primo)
    return numero
print (pr(numero,divisor,primo))

Esse não é o caminho que eu efetivamente estava pensando para resolver o problema, que é, Um número é informado e ele devolve o maior primo, menor ou igual, ao numero informado, mas eu pensei em fazer dessa forma, e como estou começando agora a programar quero explorar e entender o máximo possível.

Compartilhe

1 Resposta

+1 voto
respondida Abr 6 por Stuart Mill (1,404 pontos)  

O que você está querendo fazer com essa função? Não ficou muito claro para mim.
Sugiro dar uma olhada nesta pergunta para uma implementação de um programa para buscar primos de uma forma um pouco mais eficiente.

...