Python_Pa_Preguntar
Python_Pa_Preguntar
"""
Created on Sun Dec 1 17:34:43 2024
@author: Ruben
"""
#Tipos de datos:
#Numericos
#Texto
#Booleanos
#Tipos Numericos:
#
EDAD = 13.2
EDAD = 13
#EDAD queda con el ultimo tipo de dato asignado en este caso un INT.
altura = 1.73
print(EDAD, altura)
a = 5
b = 2
print(a-b)
print(a+b)
print(a*b)
print(a/b) #toma en cuenta los decimales
print(a//b) # no toma en cuenta los decimales
print(a%b)
print(-a)
print(-b)
print(a**b) # 5 al cuadrado
print(b**a) # 2 elevado a la 5
print( a + b*a )
print( (a+b) * a) #fuerzo el orden de precedencia utilizando los parentesis
#los parantesis me permiten indicar un orden de precedencia diferente.
"""
hola soy un comentario de multiple lineas
y lalalal
kkekekkek xdd
"""
#
22222222222222222222222222222222222222222222222222222222222222222222222222222222222
2
#condicional if
artes = False
deportes = False
matematicas = True
if artes == True:
print("estudia Teatro")
#la identacion o espacio despues del if es OBLIGATORIA en Python para especificar
que esa linea va dentro del if
if artes == True:
print('estudia teatro')
else:
print ("podrias estudiar medicina o ingenieria")
#entrada = int(entrada)
#
3333333333333333333333333333333333333333333333333333333333333333333333333333333333
"""
edades = [13,35,2,14324]
persona1 = ["Ruben", 12]
items = [edades, persona1]
print(items[1])
print(items[0])
print(items[1][0])
print(items[0][3])
#
4444444444444444444444444444444444444444444444444444444444444444444444444444444444
#
55555555555555555555555555555555555555555555555555555555555555555555555555555555555
5
#TUPLAS (diferencias con las listas, es que las tuplas son elementos inmutables(no
se puede
#borrar ni quitar elementos))
#
66666666666666666666666666666666666666666666666666666666666666666666666666666666666
66
contador=0
contador_negativos=0
while contador < 10:
print("Iteración: ", contador)
contador+=1 #contador = contador + 1
print("Iteración: ", contador_negativos)
contador_negativos-=1 #contador_negativos = contador_negativos - 1
print("Termina ejecución") #se debe respetar la identación
total=0
num_sumas=5
contador_=0
"""
# Tienda de pinturas
#con FOR
for color in colores:
print("FOR => Hay pintura color:", color)
#con WHILE
indice = 0
while indice < len(colores):
print("WHILE => Hay pintura color:", colores[indice])
indice += 1
print(formatea_nombre(apellido="LagarDE", apellido_materno="PoNtI",
nombre="alVaro"))
#
88888888888888888888888888888888888888888888888888888888888888888888888888888888888
#
99999999999999999999999999999999999999999999999999999999999999999999999999999999999
99
externa = "EXTERNA"
def funcion(parametro):
interna = "INTERNA"
print("ADENTRO", externa, parametro, interna)
funcion("PARAMETRO_")
#
10000000000000000000000000000000000000000000000000000000000000000000000000000000000
00
una funcion con una sola expresion de una linea, si yo quisiera mas lineas deberia
usar
una funcion tradicional
"""
#los dos puntos indican la finalizacion de los parametros
suma = lambda a, b : a + b
multiplicacion = lambda a,b,c : a*b*c
constante = lambda: 10 #devuelve una constante en este caso 10
personas = [("Juan",82,5),("Luisa",41,10),("Arnulfo",75,20)]
print("Desordenada", personas)
personas.sort() #esto ordena por defecto por el primer elemento de cada
iteracion(en este caso
#por tipo de dato tupla) y por nombre
print("Ordenada por nombre", personas)
personas.sort(key= lambda persona: persona[1]) # esto le indica que ordene por el
segundo elemento
print("Ordenada por edad", personas)
personas.sort(key= lambda persona: persona[1] + persona[2]) # esto le indica que
ordene por la suma de dos elementos
print("Ordenada por edad+credito", personas)
#las funciones lambdas se usan en combinacion con Pandas una libreria de analisis
de datos
#para realizar filtros
"""
#
11111111111111111111111111111111111111111111111111111111111111111111111111111111111
"""
PERSONA
#añadir llave
persona["peso"] = 108
print(persona)
#quitar llave
persona.pop("peso")
print(persona)
"""conteo de palabras(lo usan en redes sociales para ver si mencionas mucho una
palabra te asocian algo
por ejemplo si decis mucho amor pueden decir que sos romantico) """
texto = "texto agregado gdLorem ipsum dolor sit amet, consectetur adipiscing elit,
sed texto agregado do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud texto exercitation ullamco laboris nisi ut
aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
est laborum."
vocablos = texto.split() #genera una lista, con un elemento por cada una de las
palabras tomando el espacio por separador
#otra manera: texto.split(" ")
palabras = {}
print(palabras.keys())
print(palabras.values())
print(palabras.items())
lista = list(palabras.items())
print(lista)
lista.sort(key= lambda palabra : palabra[1],reverse=True)
print(lista)
#1111112222222222222222222222222222222222222222222222222222222222222222222222222
try:
monto = float(input("Indica el monto del crédito: "))
num_pagos = float(input("Indica el número de pagos: "))
pago_mensual = monto/num_pagos
print("El pago mensual será de:", pago_mensual)
except ValueError: #tambien puedo escribir Exception
print("Captura valores numéricos") #estos son tips al usuario de como debe
usar nuestro programa
except ZeroDivisionError:
print("No puedes indicar 0 pagos") #por que no se puede dividir por cero
except:
#excepción general(en caso de que haya cualquier excepción viene por acá)
print("Hubo un error, por favor intentalo nuevamente")
#
11111111111114444444444444444444444444444444444444444444444444444444444444444444444
#chequear los modulos instalados, tipeamos en la terminal help("modules")
#supongamos que del modulo math solo me interesa usar ciertas funciones, entonces
puedo
#hacer que me importe del modulo las librerias que quiero
"""
#aca solo importamos las funciones y no es necesario utilizar el math.funcion()
#sino solo funcion()
from math import floor, ceil
print(floor(2.5))
print(ceil(2.5))
"""
#
1111111111111111111111155555555555555555555555555555555555555555555555555555555555
"""
CASO BASE: El caso más simple o el último caso
"""
imprimir numeros del 5 al 0
primero necesito
Imprimir 5 + Imprimir del 4 al 0
Imprimir 4 + Imprimir del 3 al 0
Imprimir 3 + Imprimir del 2 al 0
Imprimir 2 + Imprimir del 1 al 0
Imprimir 1 + Imprimir el 0
"""
def recursiva(n):
if n == 0:
print(n)
else:
print(n)
recursiva(n-1)
recursiva(5)
"""
ejemplo de calculo del factorial
al factorial lo especificamos con el simbolo de exclamación
0! = = 1
1! = 1 = 1
2! = 1 * 2 = 2
3! = 1 * 2 * 3 = 6
4! = 1 * 2 * 3 * 4 = 24
5! = 1 * 2 * 3 * 4 * 5 = 120
"""
factorial(6)
factorial_iterativo(5)
for i in range(6):
print(i, factorial_recursivo(i))
inicio = perf_counter()
for i in range(1000000):
factorial_iterativo(100)
fin = perf_counter()
inicio = perf_counter()
for i in range(1000000):
factorial_recursivo(100)
fin = perf_counter()
#como se puede apreciar el metodo recursivo lleva un poco más del doble de tiempo
#de ejecución que el metodo iterativo
# 11111111111111116666666666666666666666666666666666666666666666666666666666666666
lista = [11,12,13,14,15,16,17]
for i in range(10,19):
print(i, busqueda_binaria_iterativa(lista, i))
print(i, busqueda_binaria_recursiva(lista, 0, len(lista) -1 , i))
# 111111111111111111111111111117777777777777777777777777777777777777777777777777
from random import randint
class Tragamonedas:
def __str__(self):
return "Id: "+ str(self.id) + " - Premio: " + str(self.premio)
def jugar(self):
self.monedas += 1
numeros = randint(0, 9), randint(0, 9), randint(0, 9)
mensaje = ""
if numeros[0] == numeros[1] == numeros[2]:
self.jackpots += 1
mensaje = "Felicidades !!! Ganaste %0.2f" % self.premio
else:
mensaje = "Mejor suerte para la próxima"
return numeros, mensaje
for i in range(100):
print(tragamonedas_a.jugar())
print(tragamonedas_b.jugar())
# 1111111111111111111888888888888888888888888888888888888888888888888888888888888
class Cuenta:
def __ejemplometodoprivado(self,monto):
return ""
#"TRUQUITO" de python para acceder al valor privado de una clase desde afuera de la
misma:
#nombreInstancia.NombreClase__propiedad.
#Ejemplo: cuenta.Cuenta__balance
# 111111111111111111111111199999999999999999999999999999999999999999999999999999
class Vehiculo:
folio = 0
COLORES = ("BLANCO", "ROJO", "VERDE")
def __str__(self):
return str(self.serie) + " " + self.color
print(vehiculo_a)
print(vehiculo_b)
# 22222222222222222222222222222220000000000000000000000000000000000000
class Producto:
def crear_etiqueta(self):
return " %s \n %s \n %0.2f" % (self.id,
self.descripcion,
self.costo)
class Electronico(Producto):
class Perecedero(Producto):
def crear_etiqueta(self):
return super().crear_etiqueta()+ "\n %s" % self.caducidad
#aca se hace una especializacion de crear etiqueta... yo podria crearme un
metodo
#con otro nombre en lugar de sobreescribirlo(usar el mismo nombre que clase
padre)
#pero asi tendria este nuevo metodo y tambien el crear_etiqueta de la clase
padre
#y tener los dos metodos seria algo confuso y estariamos en un mal diseño
"""
isintance(per, Producto) => True
isintance(ele, Producto) => True
isintance(pro, Producto) => True
"""