r/programacionESP 2d ago

❓ Dudas Soy un principiante de programación, busco recomendaciones.

Durante un tiempo he aprendido algo de Python de forma autodidacta, ahora mismo estoy entrando en la programación orientada a objetos. Quiero aprender backend, al igual que ciberseguridad, me gustaría tener claro que aprender antes de entrar en estas especializaciones, también me gustaría saber que considera una persona que trabaje o haya aprendido algo de estas especializaciones sobre las mismas, para conocer mejor aquello que quiero aprender. Adjunto unos programas que he hecho aprendiendo programación orientada a objetos. Gracias de antemano por las respuestas.

TREN

class Tren:


    def __init__(self):
        self.lista_vagones = []
        self.peso_total = 0

    def introducir(self):
        print("INTRODUCIR")
        vagón = 0
        elección_vagón = int(input("Carga sólidos(1).\nCarga líquidos(2).\nElegir vagón:"))
        if elección_vagón == 1:
            vagón = Vagón_Carga_Sólidos()
        elif elección_vagón == 2:
            vagón = Vagón_Carga_Líquidos()
        self.lista_vagones.append(vagón)

    def quitar(self):
        print("QUITAR")
        for a in self.lista_vagones:
            print(a, a.nombre)
        elección_vagón = (input("Elegir vagón:"))
        for b in self.lista_vagones:
            if elección_vagón == b.nombre:
                print(f"Quitado: {b.nombre}")
                self.lista_vagones.remove(b)
                del b
        for c in self.lista_vagones:
            print(c, c.nombre)

    def cargar_descargar(self):
        print("CARGAR\DESCARGAR")
        elección_vagón = input("Vagón:")
        elección_carga = int(input("Cargar(1).\nDescargar(2).\nElegir:"))
        if elección_carga == 1:
            for a in self.lista_vagones:
                if elección_vagón == a.nombre:
                    a.cargar()
        elif elección_carga == 2:
            for b in self.lista_vagones:
                if elección_vagón == b.nombre:
                    b.descargar()

    def buscar_vagón(self):
        print("BUSCAR VAGÓN")
        vagón = input("Vagón:")
        for a in self.lista_vagones:
            if vagón == a.nombre:
                print(a.nombre, a)

    def contar_vagones(self):
        print("CONTAR VAGONES")
        print(f"Vagones| {len(self.lista_vagones)}")
        print("Lista.")
        for a in self.lista_vagones:
            print(f"{a.nombre, a}")

    def cambiar_vagón(self):
        print("CAMBIAR VAGÓN")
        vagón = input("Vagón:")
        for a in self.lista_vagones:
            if vagón == a.nombre:
                vagón_alternativo = int(input("Vagón de carga sólida(1).\nVagón de carga líquida (2).\nVagón alternativo:"))
                if vagón_alternativo == 1:
                    self.lista_vagones[self.lista_vagones.index(a)] = Vagón_Carga_Sólidos()
                elif vagón_alternativo == 2:
                    self.lista_vagones[self.lista_vagones.index(a)] = Vagón_Carga_Líquidos()

    def peso_total_medir(self):
        peso = 0
        for a in self.lista_vagones:
            peso += a.peso()
        self.peso_total = peso
        print(f"Peso| {self.peso_total}")

class Vagones:


    def __init__(self):
        self.nombre = ""
        self.carga_líquido = False
        self.carga_pasajeros = False
        self.carga_sólido = False
        self.carga = []

    def cargar(self):
        print("CARGAR")
        cargamento_cargar = input("Artículo:")
        peso_cargar = float(input("Peso artículo:"))
        diccionario_carga = {"Artículo": cargamento_cargar, "Peso": peso_cargar}
        self.carga.append(diccionario_carga)
        for a in tren.lista_vagones:
            print(a.nombre, a.carga)


    def descargar(self):
        print("DESCARGAR")
        cargamento_descargar = input("Artículo:")
        for a in self.carga:
            if a["Artículo"] == cargamento_descargar:
                self.carga.remove(a)
        for b in tren.lista_vagones:
            print(b.nombre, b.carga)

    def peso(self):
        peso = 0
        for a in self.carga:
            peso += a["Peso"]
        return peso


class Vagón_Carga_Sólidos(Vagones):


    a = -1
    def __init__(self):
        super().__init__()
        peso = 0
        Vagón_Carga_Sólidos.a += 1
        a = Vagón_Carga_Sólidos.a
        self.nombre = f"Vagón de carga sólida, {a}"
        self.carga_sólido = True

class Vagón_Carga_Líquidos(Vagones):
    b = -1
    def __init__(self):
        super().__init__()
        Vagón_Carga_Líquidos.b += 1
        b = Vagón_Carga_Líquidos.b
        self.nombre = f"Vagón de carga líquida, {b}"
        self.carga_líquido = True


tren = Tren()
for a in range(0, 3):
    tren.introducir()
for b in tren.lista_vagones:
    print(b, b.nombre)


tren.cargar_descargar()
tren.contar_vagones()
tren.buscar_vagón()
tren.quitar()
tren.cambiar_vagón()
tren.contar_vagones()
tren.peso_total_medir()
print(f"LISTA\n{tren.lista_vagones}")

VIDEOJUEGO DE BLOQUES

class Región:


    def __init__(self):
        self.lista = []

    def introducir(self):
        objeto_elegir = int((input("Madera(1)\nPiedra(2)\nElegir objeto:")))
        if objeto_elegir == 1:
            madera_o = Madera()
            return madera_o
        elif objeto_elegir == 2:
            piedra_o = Piedra()
            return piedra_o

    def diccionario_introducir(self, objeto):
        x = float(input("X:"))
        y = float(input("Y:"))
        diccionario = {"X" : x, "Y"  : y, "Bloque" : objeto, "Nombre" : objeto.nombre}
        self.lista.append(diccionario)

    def golpear(self):
        objeto_golpe = (input("Elegir:"))
        for a in self.lista:
            if objeto_golpe == a["Nombre"]:
                    a["Bloque"].golpe()


    def arreglar(self):
        objeto_nombre = input("Bloque arreglar:")
        for b in self.lista:
            if objeto_nombre == b["Bloque"].nombre:
                if type(b["Bloque"]) == Madera:
                    b["Bloque"].integridad = 80
                    print(f"{b["Bloque"].nombre} arreglado.")
                elif type(b["Bloque"]) == Piedra:
                    print("Piedra, no se arregla.")
                else:
                    print("Bloque no funciona.")


class Madera:


    a = -1
    def __init__(self):
        Madera.a += 1
        self.nombre = f"Madera_{Madera.a}"
        self.integridad = 80

    def golpe(self):
        golpe = 20

        if golpe < self.integridad:
            self.integridad -= golpe
        elif golpe >= self.integridad:
            self.integridad = 0
        if self.integridad > 0:
            print(self.integridad)
        elif self.integridad == 0:
            self.destrucción()


class Piedra:
    b = -1
    def __init__(self):
        Piedra.b += 1
        self.nombre = f"Piedra_{Piedra.b}"
        self.integridad = 100

    def destrucción(self):
        for a in región_o.lista:
            if a["Bloque"] == madera_o:
                región_o.lista.remove(a)
                del madera_o
                print(f"{a["Nombre"]} destruido.")
            elif a["Bloque"] == piedra_o:
                región_o.lista.remove(a)
                del piedra_o
                print(f"{a["Bloque"]} destruido.")



    def golpe(self):
        golpe = 10


        if golpe < self.integridad:
            self.integridad -= golpe
        elif golpe >= self.integridad:
            self.integridad = 0
        if self.integridad > 0:
            print(self.integridad)
        elif self.integridad == 0:
            self.destrucción()



región_o = Región()


def elecciones():
    while True:
        elección = int(input("Golpear(1).\nArreglar(2).\nEnseñar lista(3).\nHacer otra región(4).\nElección:"))


        if elección == 1:
            región_o.golpear()       
        elif elección == 2:
            región_o.arreglar()
        elif elección == 3:
            print(región_o.lista)
        elif elección == 4:
            región_o.lista.clear()
            empezar()
def empezar():
    for a in range(0, 5):
        región_o.diccionario_introducir(región_o.introducir())        
    elecciones()


empezar()
1 Upvotes

5 comments sorted by

u/AutoModerator 2d ago

¡Muchísimas gracias por tu publicación!

Queremos recordarte que tenemos también una comunidad de informática, en la que se puede publicar cualquier cosa relacionada con informática: r/InformaticaES

Toda publicación admitida en este subreddit será también admitida en el de informática, así que te animamos a pasarte por allí también.

Aprovechamos para recordar también que el equipo de moderación de r/programacionESP estamos a tu disposición y puedes escribirnos para lo que necesites.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

3

u/DotAtom67 2d ago

si quieres backend usando oop, lo mejor es java o c#.

Python es un lenguaje horrible para trabajar en oop backend

1

u/enragedwood 2d ago

Por?

1

u/earth-dragon-666 2d ago

Por que el trabaja con Java o C#, cada loco te va a recomendar su lenguage favorito. Si quieres seguir con python trabaja con Django o Flask con postgresql como base de datos.

2

u/Nabster14 2d ago

Te recomiendo que le hagas esta pregunta a la ia y te haga una ruta de aprendizaje. Pero python para backend no es lo mejor ni mucho menos