Clase Numero 19 – Ejercicio Password con Clases y Soldados

Ejercicio fase 1

"""
armar CLASE password
Atributos: longitud y contraseña
longitud x defecto = 8
constructores: uno x defecto y
uno que genera pass con la longitud que le pasemos
Metodo() esFuerte->devuelve un booleano si es fuerte o n o
(2 mayusculas, 1 minuscula, 5 caracteres minimo)
generarPassword-> genera la contraseña con la longitud del objeto que tenga
Metodo Get para contraseña y longitud
Metodo Set para longitud

"""

import random as R

class Password():
    def __init__(self, long=8, cont=""):
        self.long = long
        self.cont = cont
        
def esFuerte():
    return



class generar_password():
    def __init__(self):
        self.numero = ""
        self.letra_min = ""
        self.letra_mayu = ""
        
    
password_fuerte = generar_password()

a = 0
while a < 9:
    password_fuerte.numero = R.randint (0, 100)
    password_fuerte.letra_min = chr (R.randint (ord ("a") , ord("z")))
    password_fuerte.letra_mayu = chr (R.randint (ord ("A") , ord("Z")))


    print ("\nNumero generado: " + str (password_fuerte.numero))
    print ("\nLetra Minuscula Generada: " + str (password_fuerte.letra_min))
    print ("\nLetra Mayuscula Generada: " + str (password_fuerte.letra_mayu))
    
    a +=1

Resultado

>>> %Run ejercicio_clases_password.py

Numero generado: 24

Letra Minuscula Generada: z

Letra Mayuscula Generada: J

Numero generado: 95

Letra Minuscula Generada: p

Letra Mayuscula Generada: C

Numero generado: 76

Letra Minuscula Generada: m

Letra Mayuscula Generada: X

Numero generado: 85

Letra Minuscula Generada: w

Letra Mayuscula Generada: C

Numero generado: 40

Letra Minuscula Generada: c

Letra Mayuscula Generada: K

Numero generado: 41

Letra Minuscula Generada: k

Letra Mayuscula Generada: C

Numero generado: 68

Letra Minuscula Generada: k

Letra Mayuscula Generada: A

Numero generado: 41

Letra Minuscula Generada: c

Letra Mayuscula Generada: H

Numero generado: 50

Letra Minuscula Generada: o

Letra Mayuscula Generada: L
>>> 

Ejercicio Fase 2 – Completo con Clases

"""
armar CLASE password
Atributos: longitud y contraseña
longitud x defecto = 8
constructores: uno x defecto y
uno que genera pass con la longitud que le pasemos
Metodo() esFuerte->devuelve un booleano si es fuerte o n o
(2 mayusculas, 1 minuscula, 5 caracteres minimo)
generarPassword-> genera la contraseña con la longitud del objeto que tenga

"""

import random as R

class Password():
    
    def __init__(self, long=8):
        
        self.long = long
        self.cont = ""
        
        if self.long < 8:
            self.long = 8 
        
        self.generar()
    
    def generar(self):
        
        salir = False
        while not salir:
            
            cadena = ""
            for c in range(self.long):
                n = R.randint(1,100)
                if n <= 10:
                    cadena += chr(R.randint (ord ("A") , ord("Z")))
                else:
                    if n <= 20:
                        cadena += chr(R.randint (ord ("a") , ord("z")))
                    else:
                        cadena += chr(R.randint (ord ("0") , ord("9")))
            
            self.cont = cadena
            if self.esFuerte():
                salir = True
        
    def esFuerte(self):
        cma=0
        cmi=0
        cdi=0
        
        for letra in self.cont:
            if letra.islower():
                cmi += 1
            else:
                if letra.isupper():
                    cma += 1
                else:
                    cdi += 1
        return cma>=1 and cmi >=2 and cdi >= 5

    
    def __str__(self):
        return self.cont




class generar_password():
    def __init__(self):
        self.numero = ""
        self.letra_min = ""
        self.letra_mayu = ""
        
def main():
    
    print(Password())
    print(Password(1))
    print(Password(10))
    
    x = Password()
    
    if x.esFuerte():
        print("es fuerte")
        
    x.long = 5
    x.cont="pepe"

    if x.esFuerte():
        print("es fuerte")
    else:
        print("NNNOOO es fuerte")
    
main()

Resultado

>>> %Run ejercicio_clases_passwordDOS.py
27md0U37
E1z9e380
14y1m7IFj6
es fuerte
NNNOOO es fuerte
>>> 

Ejercicio Clases, atributos y metodos -1

"""
practica de clases, objetos, atributos y metodos
"""
class Personaje(): # CLASE que representa al personaje principal
    def __init__(self): # METODO que establece los Atributos del Objeto
        self.nombre = "Alberto"
        self.sexo = "M"
        self.puntos_impacto_max = 80
        self.puntos_impacto_actuales = 50
        self.vel_max = 20
        self.escudo = 21
    
    def __str__(self):
        
        return "Nombre: " + str (self.nombre) + "\nSexo: " + str (self.sexo) \
         + "\nPuntos de Impacto: " + str (self.puntos_impacto_max) \
         + "\nPuntos Impacto Actuales: " + str (self.puntos_impacto_actuales) \
         + "\nVelocidad Maxima: " + str (self.vel_max) + "\nEscudo: " + str (self.escudo)
    

p = Personaje()
print ("Personaje Principal: \n") 
print (str(p))

#/////////////////////////////////////////////////
"""
Ejemplo dos
"""
class Direccion(): # tiene todos los campos para una direccion
    def __init__(self):
        self.nombre = ""
        self.calle1 = ""
        self.calle2 = ""
        self.ciudad = ""
        self.localidad = ""
        self.cp = ""
        
# La CLASE esta DEFINIDA pero NO creada, para CREARLA debemos definir una instancia de la Clase Direccion

casa_direccion = Direccion() # creamos una direccion

# definimos los campos de la Direccion

casa_direccion.nombre = "Alberto"
casa_direccion.calle1 = "Jonte"
casa_direccion.calle2 = "San Nicolas"
casa_direccion.ciudad = "CABA"
casa_direccion.localidad = "Monte Castro"
casa_direccion.cp = "1407GOS"

# ahora creamos otra direccion usando la misma Clase Direccion()

casa_vacaciones = Direccion() # creamos otra direccion

# definimos los campos de esta nueva Direccion

casa_vacaciones.nombre = "Cabañas del Bosque"
casa_vacaciones.calle1 = "Amapolas"
casa_vacaciones.calle2 = "Avenida 5"
casa_vacaciones.ciudad = "Costa del Este"
casa_direccion.localidad = "Partido de la Costa"
casa_vacaciones.cp = "7108"


print ("\nLa direccion de " + casa_direccion.nombre + " es: " + casa_direccion.calle1 \
       + " y " + casa_direccion.calle2)

print ("\nLa casa de Vacaciones esta en: " + casa_vacaciones.calle1 + " y " \
       + casa_vacaciones.calle2 + " " + casa_vacaciones.ciudad ) 

Resultado

Nombre: Alberto
Sexo: M
Puntos de Impacto: 80
Puntos Impacto Actuales: 50
Velocidad Maxima: 20
Escudo: 21

La direccion de Alberto es: Jonte y San Nicolas

La casa de Vacaciones esta en: Amapolas y Avenida 5 Costa del Este

Ejercicio Clases, atributos y metodos -2

"""
practica de clases, objetos, atributos y metodos
"""

import random as R

class Personaje(): # CLASE que representa al personaje principal
    def __init__(self): # METODO que establece los Atributos del Objeto
        self.nombre = "Alberto"
        self.sexo = "M"
        self.puntos_impacto_max = 80
        self.puntos_impacto_actuales = 50
        self.vel_max = 20
        self.escudo = 21
    
    def __str__(self):
        
        return "Nombre: " + str (self.nombre) + "\nSexo: " + str (self.sexo) \
         + "\nPuntos de Impacto: " + str (self.puntos_impacto_max) \
         + "\nPuntos Impacto Actuales: " + str (self.puntos_impacto_actuales) \
         + "\nVelocidad Maxima: " + str (self.vel_max) + "\nEscudo: " + str (self.escudo)
    

p = Personaje()
print ("Personaje Principal: \n") 
print (str(p))

#/////////////////////////////////////////////////
"""
Ejemplo dos
"""
class Direccion(): # tiene todos los campos para una direccion
    def __init__(self):
        self.nombre = ""
        self.calle1 = ""
        self.calle2 = ""
        self.ciudad = ""
        self.localidad = ""
        self.cp = ""
        
# La CLASE esta DEFINIDA pero NO creada, para CREARLA debemos definir una instancia de la Clase Direccion

casa_direccion = Direccion() # creamos una direccion

# definimos los campos (ATRIBUTOS) de la Direccion

casa_direccion.nombre = "Alberto"
casa_direccion.calle1 = "Jonte"
casa_direccion.calle2 = "San Nicolas"
casa_direccion.ciudad = "CABA"
casa_direccion.localidad = "Monte Castro"
casa_direccion.cp = "1407GOS"

# ahora creamos otra direccion usando la misma Clase Direccion()

casa_vacaciones = Direccion() # creamos otra direccion

# definimos los campos de esta nueva Direccion

casa_vacaciones.nombre = "Cabañas del Bosque"
casa_vacaciones.calle1 = "Amapolas"
casa_vacaciones.calle2 = "Avenida 5"
casa_vacaciones.ciudad = "Costa del Este"
casa_direccion.localidad = "Partido de la Costa"
casa_vacaciones.cp = "7108"


print ("\nLa direccion de " + casa_direccion.nombre + " es: " + casa_direccion.calle1 \
       + " y " + casa_direccion.calle2)

print ("\nLa casa de Vacaciones esta en: " + casa_vacaciones.calle1 + " y " \
       + casa_vacaciones.calle2 + " " + casa_vacaciones.ciudad ) 

"""--------------------------------------------------------------------"""
# ahora definimos los METODOS; los Metodos van Despues de los ATRIBUTOS
"""cuando creamos métodos para clases:

Los atributos deben ir primero, los métodos después.
El primer parámetro, en cualquier método, debe ser self.
Las definiciones de métodos deben ir indentadas exactamente una tabulación.
"""

class soldado():
    def __init__(self):
        self.edad = 0
        self.nombre = ""
        self.golpe = 0
        self.escudo = 0
    
    def ataca(self): # definicion del METODO ataca()
        print ("Ataque!! ")
        
# ahora lo invocamos de la misma manera que con los atributos

soldado_ataca = soldado()

soldado_ataca.edad = 25
soldado_ataca.nombre = "Jhon Rambo"
soldado_ataca.golpe = R.randint(66, 99)
soldado_ataca.escudo = R.randint(38, 74)

soldado_ataca.ataca()
print ("\nGolpe: " + str (soldado_ataca.golpe))

print ("\nDefensa: " + str (soldado_ataca.escudo))

Resultado

>>> %Run ejercicio_clases_passwordTRES.py
Personaje Principal: 

Nombre: Alberto
Sexo: M
Puntos de Impacto: 80
Puntos Impacto Actuales: 50
Velocidad Maxima: 20
Escudo: 21

La direccion de Alberto es: Jonte y San Nicolas

La casa de Vacaciones esta en: Amapolas y Avenida 5 Costa del Este
Ataque!! 

Golpe: 95

Defensa: 50
>>> 

Ejercicio Dos Soldados

"""
Ejemplo con clases, objetos, atributos y metodos
soldados se atacan y se calcula resultado
"""

import random as R

# definimos la CLASE -Soldado

class Soldado():
    
    def __init__(self):
        
        self.ataque = 0
        self.defensa = 0
        self.vida = 0
        
# dentro de la clase Soldado definimos el metodo Ataque
    
    def ataca (self):
        print ("Ataque!! ")
        
# Podemos invocar a los métodos cómo referenciamos atributos de un objeto

el_soldado = Soldado() # creamos el_soldado a partir de la clase Soldado

# establecemos los atributos de el_soldado
el_soldado.nombre = "John Rambo"
el_soldado.ataque = R.randint(30, 100)
el_soldado.defensa = R.randint (10, 80)
el_soldado.vida = 100

# llamamos a la funcion "ataca"
el_soldado.ataca()
    
"""
tambien podemos acceder a los atributos
usando el operador punto y la referencia self.

def ataca (self):
        print ("Ataque!! " , self.nombre)
"""

# ahora mostramos los resultados del ataque

print ("\n" + el_soldado.nombre)
print ("\nGolpe: " + str (el_soldado.ataque))
print ("\nDefensa: " + str (el_soldado.defensa))

# ahora creamos OTRO soldado

el_soldadoDos = Soldado()

print ("\nTurno Soldado Dos\n")

el_soldadoDos.nombre = "Terminator"
el_soldadoDos.ataque = R.randint(80, 150)
el_soldadoDos.defensa = R.randint (10, 80)
el_soldadoDos.vida = 100

el_soldadoDos.ataca()

print ("\n" + el_soldadoDos.nombre)
print ("\nGolpe: " + str (el_soldadoDos.ataque))
print ("\nDefensa: " + str (el_soldadoDos.defensa))


# comparamos los ataques y defensas de los jugadores para ver quien gano

def main ():
    
    if el_soldado.ataque > el_soldadoDos.defensa:
        el_soldadoDos.vida = 100 + (el_soldadoDos.defensa - el_soldado.ataque)
        print ("\nTerminator, Vida Restante: " , el_soldadoDos.vida)
        if el_soldadoDos.vida <= 0:
            print ("\nTerminator, Estas Muerto!")
    else:
        print ("\nTerminator, Defensa Exitosa")
            
    if el_soldadoDos.ataque > el_soldado.defensa:
        el_soldado.vida = 100 + el_soldado.defensa - el_soldadoDos.ataque
        print ("\nRambo, Vida Restante: " , el_soldado.vida)
        if el_soldado.vida <= 0:
            print ("\nRambo, Estas Muerto!")
    else:
        print ("\nRambo, Defensa Exitosa")
               
        
main ()

Resultado

>>> %Run soldados_mi_ejemplo.py
Ataque!! 

John Rambo

Golpe: 41

Defensa: 44

Turno Soldado Dos

Ataque!! 

Terminator

Golpe: 144

Defensa: 42

Terminator, Defensa Exitosa

Rambo, Vida Restante:  0

Rambo, Estas Muerto!

Leave a Reply

Your email address will not be published. Required fields are marked *