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

Erro no Código

Boa Tarde Pessoal

Resolvi escrever um código para praticar, e ele funcionou perfeito (algo bem básico). Porém, resolvi transformar as partes dele em funções e aí não consegui mais executá-lo, dando erros em vários momentos. Alguns eu consegui corrigir, outros eu não entendi onde está o erro. Será que alguém poderia me ajudar? Segue o código abaixo e o erro também.

Valeu!

def play():

    mensagem_abertura()

    jogador = pede_jogador()
    gols = pede_gols(jogador)
    xG = pede_xG(jogador)

    diferenca_positiva = calculo_positivo_gol_xG(gols, xG)
    diferenca_negativa = calculo_negativo_gol_xG(gols, xG)

    diferenca_gols_xG(jogador, gols, xG, diferenca_positiva, diferenca_negativa)
    qualidade_da_temporada(jogador, diferenca_positiva, diferenca_negativa)

def calculo_positivo_gol_xG (gols, xG):
    gols - xG

def calculo_negativo_gol_xG (gols, xG):
    xG - gols

def pede_gols(jogador):
    gols = int(input("Digite o número de gols do {}:".format(jogador)))
    return gols

def pede_xG(jogador):
    xG = float(input("Digite a xG acumulada do {}:".format(jogador)))
    return xG

def pede_jogador():
    jogador = input("Digite o nome do jogador:")
    jogador = jogador.strip()
    return jogador

def diferenca_gols_xG(jogador, diferenca_positiva, diferenca_negativa, gols, xG):
    if gols < xG:
        print("O {} está devendo {:.2f} gols na temporada.".format(jogador, diferenca_negativa))
    elif gols > xG:
        print("O {} está sobrando {:.2f} gols na temporada.".format(jogador, diferenca_positiva))
    else:
        print("O {} está com os gols em dia na temporada.".format(jogador))


def qualidade_da_temporada(jogador, diferenca_positiva, diferenca_negativa):
    if diferenca_positiva >= 5:
        print("O {} está tendo uma temporada espetacular!".format(jogador))
    elif diferenca_positiva >= 1 and diferenca_positiva < 5:
        print("O {} está tendo uma boa temporada.".format(jogador))
    elif diferenca_negativa >= 5:
        print("O {} está tendo uma péssima temporada...".format(jogador))
    elif diferenca_negativa >= 1 and diferenca_negativa < 5:
        print("O {} está tendo uma temporada abaixo do esperado...".format(jogador))
    else:
        print("O {} está tendo uma temporada regular de aproveitamento.".format(jogador))


def mensagem_abertura():
    print("\nBem vindo ao programa Gols e xG!\n")

if(__name__ == "__main__"):
    play()

Erro:

Bem vindo ao programa Gols e xG!

Digite o nome do jogador: Eduardo

Digite o número de gols do Eduardo: 45

Digite a xG acumulada do Eduardo: 40.5

Traceback (most recent call last):

File "C:\Users\eduar\PycharmProjects\pythonProject\projetos_pessoais\jogadores_xg.py", line 61, in play()

File "C:\Users\eduar\PycharmProjects\pythonProject\projetos_pessoais\jogadores_xg.py", line 13, in play diferenca_gols_xG(jogador, gols, xG, diferenca_positiva, diferenca_negativa)

File "C:\Users\eduar\PycharmProjects\pythonProject\projetos_pessoais\jogadores_xg.py", line 36, in diferenca_gols_xG if gols < xG: TypeError: '<' not supported between instances of 'NoneType' and 'NoneType'

Process finished with exit code 1

2 respostas
solução!

Fala, Eduardo! Tudo bem?

Revisando a mensagem de erro que você trouxe o erro está na verificação que você faz na linha 36. Encontrei dois pontos que estão causando isso:

  1. Na função diferenca_gols_xG você espera receber os parâmetros "gols" e "xG" por último, mas ao chamá-la você está passando esses parâmetros na segunda e terceira posição. Assim o programa está na verdade tentando comparar os valores de "diferenca_positiva" e "diferenca_negativa" de acordo com como passou. Corrigindo a ordem dos parâmetros ao chamar a função deve resolver esse erro.

  2. Corrigindo o erro 1 você receberá outro erro relacionado a "NoneType", o que ocorre é que você está definindo os valores de diferenca_positiva e diferenca_negativa com as funções calculo_positivo_gol_xG e calculo_negativo_gol_xG, mas elas não retornam nenhum valor. Implicitamente o python retornará "None" como valor e por isso o erro. O correto é fazer com que retorne o valor calculado nas funções:

def calculo_positivo_gol_xG (gols, xG):
    return gols - xG

def calculo_negativo_gol_xG (gols, xG):
    return xG - gols

Espero ter ajudado!

Perfeito! Valeu Rodrigo, ajudou demais!