es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo imprimir desde diferentes clases en Python?

Estoy repasando los conceptos básicos de Python y he conseguido que funcionen dos funciones: una por ingeniería inversa y otra mediante un método de diccionario para resolver el problema 2 en Leet Code. Sin embargo, estoy intentando hacer que funcione usando clases. He intentado crear una sola clase y ahora la he dividido en dos clases. No estoy seguro de cómo imprimir el resultado de cada función. ¡Por favor ayuda!

class Solución1:

def __init__ (self, x, y):
     self.x = x
     self.y = y

# Complejidad: O(n^2), muy ineficiente, especialmente a medida que la lista se vuelve más larga
def twoSum_BF (self, nums, target):
    # no queremos mirar el último índice (i = índice)
    para i en rango(len(nums) - 1):
        # no es necesario mirar los índices que ya hemos visto
        # -> i + 1, luego se va al final de nums
        para j en rango(i + 1, len(nums)):
            si nums [i] + nums [j] == target:
                return [i, j]

dict method

class Solución2:

def __init__ (self, x, y):
     self.x = x
     self.y = y

# la complejidad es O(n)?
def twoSum_Dict (self, nums, target):
    visto = {}

    # enumerate ofrece tanto el índice como el valor al mismo tiempo
    para i, num en enumerate (nums):
        # comprueba si el dictado visto contiene num
        # necesitaba agregar a curr para que fuera = objetivo
        # necesitamos tar - curr
        si objetivo - num en visto:
            return [visto [objetivo - num], i]
        elif num no está en visto:
            visto [num] = i

x = [2, 7, 11, 15]
y = 9
print ("El método de fuerza bruta devuelve:")
BF = (Solución1 (x, y))
print (BF)

print ("El método de diccionario devuelve:")
Dict = (Solución2 (x, y))
print (Dict)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para imprimir el resultado de cada función, necesitas realmente llamar a la función y luego imprimir el valor devuelto. En tu código actual, solo estás imprimiendo los objetos de las clases.

    Para llamar a las funciones, puedes crear un objeto de la clase y luego usar la notación de punto para llamar a la función con los argumentos apropiados. Por ejemplo:

    BF = Solución1(x, y)
    resultado1 = BF.twoSum_BF(x, y)
    print(resultado1)
    

    Esto creará un objeto de la clase Solución1 y luego llamará a la función twoSum_BF con x e y como argumentos. El valor devuelto se almacenará en la variable resultado1, que luego puedes imprimir.

    Puedes hacer lo mismo para la clase Solución2 y la función twoSum_Dict:

    Dict = Solución2(x, y)
    resultado2 = Dict.twoSum_Dict(x, y)
    print(resultado2)
    

    Esto creará un objeto de la clase Solución2 y luego llamará a la función twoSum_Dict con x e y como argumentos. El valor devuelto se almacenará en la variable resultado2, que luego puedes imprimir.

Comments are closed.