<jupyter_start><jupyter_text>Primeros pasos Para imprimir un texto<jupyter_code>print('<NAME>')<jupyter_output>Hola mundo<jupyter_text>Para capturar la entrada desde el teclado<jupyter_code>nombre = input('Ingresar el nombre: ')
nombre<jupyter_output><empty_output><jupyter_text>Variables No pueden empezar con números o símbolos<jupyter_code>a1 = 1
a1
mivar = 'variable'
mivar<jupyter_output><empty_output><jupyter_text>Tipos<jupyter_code>print(type(10))
print(type(3.4))
print(type(3+5j))
print(type('Hola'))
print(type(True))<jupyter_output><class 'bool'><jupyter_text>Cast<jupyter_code>print("Cast de integer a string",str(4))
print("Cast de float a integer",int(4.9))
print("Cast de integer a float",float(4))<jupyter_output>Cast de integer a float 4.0<jupyter_text>Output<jupyter_code>print(20,1,2013, sep='/')
print('%04d %s %.2f %c' % (1, 'El Pepe', 1.23456789, 'X'))
print('5 + 2 =', 5 + 2)
print('5 - 2 =', 5 - 2)
print('5 + 2 =', 5 + 2)
print('5 * 2 =', 5 * 2)
print('5 / 2 =', 5 / 2)
print('5 % 2 =', 5 % 2)
print('5 ** 2 =', 5 ** 2)
print('5 // 2 =', 5 // 2)
a = 1
b = 2
print(f'{a}+{b}={a+b}')
print('{}+{}={}'.format(a,b,a+b))<jupyter_output>1+2=3<jupyter_text>Módulo Math<jupyter_code>import math
print('abs(-1) =',abs(-1))
print('max(5,4) =',max(5,4))
print('min(5,4) =',min(5,4))
print('pow(2,4) =',pow(2,4))
print('ceil(4.5) =',math.ceil(4.5))
print('floor(4.5) =',math.floor(4.5))
print('round(4.5) =',round(4.5))
print('exp(1) =', math.exp(1))
print('log(e) =', math.log(math.exp(1)))
print('log(100) =', math.log(100,10))
print('sqrt(100) =', math.sqrt(100))
print('sin(0) =', math.sin(0))
print('sin(pi/2) =', math.sin(math.pi/2))
print('asin(0) =', math.asin(0))
print('asin(1.0) =', math.asin(1.0))<jupyter_output>asin(1.0) = 1.5707963267948966<jupyter_text>Módulo random<jupyter_code>import random
print('entero aleatorio entre 1 y 101 =', random.randint(1,101))<jupyter_output>entero aleatorio entre 1 y 101 = 91<jupyter_text>Strings<jupyter_code>print('Algo\n')
print(r'Algo\n')
print('Hola ' + 'mundo')
micadena = 'mi cadena'
print('longitud de la cadena:',len(micadena))
print('Primer caracter:',micadena[0])
print('Primeros tres caracteres:', micadena[0:3])
print('Los otros caracteres:', micadena[3:])
print('Dejando un espacio:', micadena[0::2])
print('Último caracter:',micadena[-1])
micadena = micadena.replace('mi','tu')
micadena
print('mi' in micadena)
print('tu' in micadena)
micadena.find('cadena')
print(' '.join(['algunas','palabras','para','la','lista']))
print('-'.join(['algunas','palabras','para','la','lista']))
micadena
print(micadena.upper())
print('UNA CADENA'.lower())
print('123'.isalnum())
print('abc'.isalpha())
print('1'.isdigit())
print('125'.isdigit())<jupyter_output>True<jupyter_text>Condicionales<jupyter_code>sexo = 'F'
if (sexo == 'M'):
    print('sexo masculino')
elif (sexo == 'F'):
    print('sexo femenino')
else:
    print('otros')
edad = 1
esVotante = True if edad >= 18 else False
esVotante<jupyter_output><empty_output><jupyter_text>Bucle While<jupyter_code>a = 1
while a < 5:
    print(a)
    a += 1
b = 0
while b <= 20:
    if b % 2 == 0:
        print(b)
    elif b == 9:
        print('is 9')
    else:
        b += 1
        continue
    b += 1<jupyter_output>0
2
4
6
8
is 9
10
12
14
16
18
20<jupyter_text>Listas<jupyter_code>milista = [1, 3.14, 'Pepe', True]
milista
print(f'la longitug de {milista} es {len(milista)}')
print(f'el primer elemento de {milista} es {milista[0]}')
print(f'el último elemento de {milista} es {milista[-1]}')
milista[0] = 2
milista[2:4] = ['Paco', False]
milista[2:2] = ['Pablo', 9]
milista
otralista = milista + ['Puca', 4]
otralista
listadelistas = [[1,2],[3,4]]
1 in listadelistas
[1,2] in listadelistas
min([1,2,3])
max([1,2,3])
listados =  [1,2,3]
while listados:
    print(listados.pop())
list(range(5))
list(range(0,6))
list(range(2,7))
list(range(1,10,3))
list('abcd')<jupyter_output><empty_output><jupyter_text>Bucle For<jupyter_code>for i in range(5):
    print(i)
for i in range(3,10):
    print(i)
for i in range(4,9):
    print(i, ' ', end="")
letras = list('abcdefg')
for letra in letras:
    print(letra, ' ', end="")
for index, letra in enumerate(letras):
    print(f'el índice de {letra} es {index}')
for x in range(0,3):
    for y in range(0,3):
        print(x,y)<jupyter_output>0 0
0 1
0 2
1 0
1 1
1 2
2 0
2 1
2 2<jupyter_text>Tuplas Igual que las listas, pero inmutables<jupyter_code>mitupla = (1, 3.14, 'Pepe')
print(f'la longitug de la tupla {mitupla} es {len(mitupla)}')
print(f'el primer elemento de {mitupla} es {mitupla[0]}')
print(f'el último elemento de {mitupla} es {mitupla[-1]}')
print(f'primer y segundo elemento de {mitupla}: {mitupla[0:2]}')
print(f'tupla invertida: {mitupla[::-1]}')<jupyter_output>tupla invertida: ('Pepe', 3.14, 1)<jupyter_text>Diccionarios<jupyter_code>frutacolor = {
    "manzana":"roja",
    "naranja":"naranja",
    "uva":"morada",
    "mandarina":"naranja"
}
len(frutacolor)
frutacolor["manzana"]
frutacolor["uva"]
frutacolor["kiwi"] = "verde"
frutacolor
frutacolor.items()
frutacolor.keys()
frutacolor.values()
for ele in frutacolor:
    print(ele)
for ele in frutacolor.values():
    print(ele)
articulo = {"nombre":"jabón", "precio":1.599}
print('el precio del %(nombre)s es $%(precio).2f' % articulo)<jupyter_output>el precio del jabón es $1.60<jupyter_text>Set Inmutable y no pueden haber elementos repetidos<jupyter_code>s1 = set([1,1,1,2,2,2,3,3])
s1
len(s1)
s2 = {3,4,5,'Pepe'}
s2
len(s2)
s3 = s1 | s2
s3
len(s3)
s3.discard('Pepe')
s3
s3.add('Paco')
s3
for s in s3:
    print(s)
while s3:
    print(s3.pop())
s3
s1.intersection(s2)
s1.difference(s2)
s1.symmetric_difference(s2)<jupyter_output><empty_output><jupyter_text>Funciones<jupyter_code>def sumar(a:int=0,b:int=0):
    return a + b
sumar(1,1)
sumar(3,1)
def sumarargs(*args):
    sum = 0
    for arg in args:
        sum += arg
    return sum
sumarargs(1,2,3,4,5)
def siguientesdos(num):
    return num+1, num+2
a, b = siguientesdos(3)
a
b
def multpor(num):
    return lambda x: x * num
f = multpor(3)
f(5)<jupyter_output><empty_output><jupyter_text>Recursividad<jupyter_code>def factorial(num):
    if num <= 1:
        return 1
    else:
        result = num * factorial(num - 1)
        return result
for i in range(10):
    print(f'el factorial de {i} es {factorial(i)}')
def fibonacci(num):
    if num == 0:
        return 0
    elif num == 1:
        return 1
    else:
        return fibonacci(num-1) + fibonacci(num-2)
for i in range(10):
    print(fibonacci(i), ' ', end="")<jupyter_output>0  1  1  2  3  5  8  13  21  34<jupyter_text>Decoradores<jupyter_code>def func(f):
    def envolvente():
        print('Inicio')
        f()
        print('Fin')
    return envolvente
@func
def mifunc():
    print('Soy una función')
mifunc()
import time
def medirtiempo(func):
    def envolvente(*args, **kwargs):
        inicio = time.time()
        rv = func(*args, **kwargs)
        total = time.time() - inicio
        print('Tiempo:', total)
        return rv
    return envolvente
@medirtiempo
def test(num):
    for _ in range(num):
        pass
for i in range(10000,100000,10000):
    test(i)
@medirtiempo
def dormir(num):
    time.sleep(num)
for i in range(1,6):
    dormir(i)
def medirtiempoconreps(func):
    def envolvente(*args, **kwargs):
        # por defecto se harán 10 mediciones
        reps = kwargs.get('reps',10)
        t = []
        for i in range(reps):
            inicio = time.time()
            rv = func(*args, **kwargs)
            total = time.time() - inicio
            t.append(total)
        return rv, t
    return envolvente
@medirtiempoconreps
def expo(a,b,reps=10, *args, **kwargs):
    return a**b
import matplotlib.pyplot as plt
reps=100
plt.plot(range(reps),expo(100000,100000,reps=reps)[1])<jupyter_output><empty_output><jupyter_text>Map<jupyter_code>uno_al_cuatro = range(1,5)
por2 = lambda x: 2 * x
list(map(por2, uno_al_cuatro))<jupyter_output><empty_output><jupyter_text>Filter<jupyter_code>lista  = range(10)
filtro = lambda x: x % 2 == 0
list(filter(filtro, lista))<jupyter_output><empty_output><jupyter_text>Reduce<jupyter_code>from functools import reduce
reduce((lambda x,y: x+y), range(1,5))
reduce((lambda x,y: x if x>y else y), range(1,5))
reduce((lambda x,y: x if x<y else y), range(1,5))<jupyter_output><empty_output><jupyter_text>Manejo de Excepciones<jupyter_code>while True:
    try:
        num = int(input('Ingresar un número: '))
        break
    except ValueError:
        print('No es un número')
    except:
        print('Error')

print('Gracias')<jupyter_output>Ingresar un número: x
No es un número
Ingresar un número: x
No es un número
Ingresar un número: 3
Gracias<jupyter_text>Archivos<jupyter_code>with open('archivo.txt', mode='w', encoding='utf-8') as miarchivo:
    miarchivo.write('texto sin sentido')
with open('archivo.txt', encoding='utf-8') as miarchivo:
    print(miarchivo.read())
print(miarchivo.closed)<jupyter_output>True<jupyter_text>Clases<jupyter_code>class Rectangulo:
    def __init__(self, altura='0', ancho='0'):
        self.__altura = altura
        self.__ancho = ancho
    
    @property
    def altura(self):
        print('La altura del rectangulo es:')
        return self.__altura
    
    @altura.setter
    def altura(self, valor):
        if valor.isdigit():
            self.__altura = valor
        else:
            print('Ingresar un número para la altura')
            
    @property
    def ancho(self):
        print('El ancho del rectangulo es:')
        return self.__ancho
    
    @ancho.setter
    def ancho(self, valor):
        if valor.isdigit():
            self.__ancho = valor
        else:
            print('Ingresar un número para el ancho')
    
    def calc_area(self):
        return float(self.__altura) * float(self.__ancho)
rect1 = Rectangulo()
rect1.altura = '5'
rect1.ancho = '10'
rect1.calc_area()
rect1.ancho
rect1.altura
type(rect1)
type(rect1).__name__
class Animal:
    def __init__(self, nombre="animal", peso=0.0):
        self.__nombre = nombre
        self.__peso = peso

    @property
    def peso(self):
        print('El peso del animal es:')
        return self.__peso
    
    @peso.setter
    def peso(self, peso):
        self.__peso = peso
        
    @property
    def nombre(self):
        print('El nombre del animal es:')
        return self.__nombre
    
    @nombre.setter
    def nombre(self, nombre):
        self.__nombre = nombre
    
    def sonido(self):
        return "Grrrr"
    
    def __str__(self):
        return '{} es un {} y hace {}'.format(self.__nombre, type(self).__name__, self.sonido())
mianim = Animal('Paco',5)
mianim.nombre
mianim.peso
str(mianim)<jupyter_output><empty_output><jupyter_text>Herencia<jupyter_code>class Perro(Animal):
    def __init__(self, nombre="perro", duegno="duegno", peso=0.0):
        Animal.__init__(self,nombre,peso)
        self.__duegno = duegno
    
    def __str__(self):
        return super().__str__() + ', y su duegno es ' + self.__duegno
perro = Perro('Daddy', 'Pepe', 10)
str(perro)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.16799276672694394, 'fraction_numerical': 0.0406871609403255, 'mean_word_length': 4.168691588785046, 'pattern_counts': {'":': 6, '<': 97, '<?xml version=': 0, '>': 95, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '26', 'dir': 'jupyter-structured-clean-dedup', 'id': '482785', 'license': 'MIT', 'n_tokens_mistral': 4762, 'n_tokens_neox': 4576, 'n_words': 945, 'path': 'python-general.ipynb', 'repo_name': 'Alex21GH/sobre-python', 'size': '11064'}