Ir ao conteúdo

Python Função do python não me retornar o valor


Ir à solução Resolvido por herbertbahia,

Posts recomendados

Postado

Boa noite, estou tentando imprimir o resultado de uma função, porém me retorna o seguinte resultado

 

<bound method Variaveis.valor_x1 of <modelos.Variaveis object at 0x0000029AD840E3D0>>

 

imagem_2022-12-29_220907240.png.ec094cb3d17cda27cdfff3d275236f6f.png

 

# Deve calcular uma equação do segundo grau
from modelos import Variaveis

variaveis = Variaveis()

# Atribui os valores das variaveis
variaveis.a = int(input("Insira o valor de A: "))
variaveis.b = int(input("Insira o valor de B: "))
variaveis.c = int(input("Insira o valor de C: "))

print(variaveis.valor_x1)
print(variaveis.valor_x2)

 

import math
class Variaveis:    
    
    @property
    def a(self):
        return self.__a
    
    @a.setter
    def a(self, a):
        self.__a = a
        
    @property
    def b(self):
        return self.__b
    
    @b.setter
    def b(self, b):
        self.__b = b
        
    @property
    def c(self):
        return self.__c
    
    @c.setter
    def c(self, c):
        self.__c = c
        
    # Aqui vai calcular o delta
    def __delta(self):
        delta = pow(self.__b, 2) - 4 * self.__a * self.__c;
        return delta
    
    # Calcula o x1 da equação
    def valor_x1(self):
        
        delta = math.sqrt(self.__delta)
        
        return ((-1 * (self.__b)) - delta) / 2 * self.__a;
        
        
    # Calcula o x2 da equação
    def valor_x2(self):
        
        delta = math.sqrt(self.__delta)
        
        return ((-1 * (self.__b)) - delta) / 2 * self.__a;

 

Postado

O código corrigido ficaria assim:

# Cria uma instância da classe Variaveis
variaveis = Variaveis()

# Atribui os valores das variaveis
variaveis.a = int(input("Insira o valor de A: "))
variaveis.b = int(input("Insira o valor de B: "))
variaveis.c = int(input("Insira o valor de C: "))

# Usa o operador de chamada de método (`.`) para acessar o resultado dos métodos
print(variaveis.valor_x1())
print(variaveis.valor_x2())

Isso deve resolver o problema e permitir que você imprima o resultado das chamadas dos métodos valor_x1 e valor_x2.

  • Solução
Postado

O código estava retornando um "bound method" porque você está tentando chamar uma função como se fosse uma propriedade (sem os parênteses).

Para chamar uma função, é necessário usar os parênteses, assim:

print(variaveis.valor_x1()) print(variaveis.valor_x2())

Isso vai chamar as funções e retornar os valores corretos.

Além disso, no código da classe Variaveis, ambas as funções valor_x1 e valor_x2 possuem o mesmo código. Isso pode ser um erro e pode levar a resultados incorretos. É preciso verificar se o código está correto e, se necessário, corrigi-lo.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...