Unidad 2
febrero 21, 2025
Programa 1
#comentario corto
#Los comentarios no afectan los programas, sirven para documentar el programa
#radio es una variable
radio=5 #radio es una variable entera
area=3.14159242 *radio **2 #float *int **int
#El area sera igual a la multiplicacion entre
#un valor flotante por un entero elevado a un entero
print(area) #float
#al imprimir el area devolvera un valor flotante
Programa 2
#comentario corto
#radio es una variable
radio=5; #int
#radio es igual a un valor entero
area=3.14159242 \
*radio **2
#float *int **int
#separador de linea
#"\" permite que la linea continue en otra linea
print(area) #float
print("esto es una cadena")#" " muestra una cadena
print("""esto es otra cadena""")#""" """ muestra otra cadena
#La diferencia es que (""" """) es una cadena que puede abarcar
#varias lineas
print(int)#muestra que tipo de dato es int
print(help(int))#muestra información relacionada a la clase int
Programa 3
#numeros
#enteros, flotantes, complejos
entero=3
flotante=5.98765432
complejo=7+5j
print("entero: ", entero)#imprime la variable entero que es un valor entero
print("flotante:", flotante)#muestra la variable flotante que es un valor flotante
print("Complejo: ", complejo)#muestra la variable complejo
# que es valor complejo (contiene una parte real y una imaginaria)
#cadenas literales,cadena, blog
cadena1='hola que tal'#literal, es tambien una cadena
cadena2="como estas"#cadena de texto
cadena3="""
espero
que muy
bien
""" #un blog es una cadena que puede abarcar varias lineas
print("****************************************")#separador visual
print("literal: ",cadena1)
print("Cadena: ",cadena2)
print("blog: ",cadena3)
print("*****************************************")
#valores booleanos
verdadero=True #variable con un valor booleano denominado True
falso=False #variable con un valor booleano denominado False
print("Verdad: ",verdadero)
print("Falso: ",falso)
print("*********************************************")
print("Tipo numero ",type(entero)) #El tipo de dato que es la variable entero es int
print("Flotante ",type(flotante)) #El tipo de dato que es la variable flotante es float
print("complejo ",type(complejo)) #El tipo de dato que es la variable complejo es complex
print("Cadena 1",type(cadena1)) #El tipo de dato que es la cadena1 es decir es str
print("Cadena 2",type(cadena2)) #El tipo de dato que es la cadena2 es decir es str
print("Cadena 3",type(cadena3)) #El tipo de dato que es la cadena3 es decir es str
print("booleanos", type(verdadero)) #El tipo de dato que es la variable verdadero es bool
print("booleanos", type(falso))#El tipo de dato que es la variable falso es bool
print("*****************************************************")
#valores octal y hexadecimal
num_octal=oct(23)#convierte el numero 23 en octal
num_hex=0x31#se define un numero hexadecimal
print("Octal: ",num_octal)
print("Hexadecimal: ",num_hex)
#El valor hexadecimal al imprimirlo con print sera mostrado en decimal
Programa 4
#operadores aritmeticos
r=0
r=5+3
print("Suma ",r)#mostrara la suma entre 5+3
print("Suma",5+3)#imprime directamente el resultado de la suma de 5+3
print("Resta", 5-3)#imprime directamente el resultado de la resta de 5-3
r=-3 #r vale ahora un numero negativo (-3)
print("Negación", r) # r vale un numero negativo
print("Multiplicación", 2*3)#muestra directamente el resultado de la multiplicacion de 2*3
print("Exponente", 5**3)#muestra el resultado de elevar 5 a la tercera potencia
print("División ", 5/2)#muestra el resultado de 5 entre 2 mostrandolo como flotante
print("División entera", 5//2)#muestra el resultado de 5 entre 2 mostrandolo como entero
# una division // elimina la parte decimal en el resultado
print("Residuo", 5%2)#muestra el residuo de la division de 5 entre 2
Programa 5
#operadores nivel bit
num1=3
num2=2
#and
res=num1&num2#& es una operación and
"""
011
010
______
010
"""#una operación "and" dará 1 si ambos bits son 1
print("and bit", res)#realiza una operación and entre 2 y 3 binarios
#or
res=num1|num2 # "|" es una operación or
"""
011
010
___
011
""" #una operacion "or" dará 1 si almenos un bit es 1
print('or bit',res) #realiza una operación "or" entre 2 y 3 binarios
#negacion
print("negacion bit", ~num1)#~ niega un numero
#negar un numero se puede realizar conviertondolo en negativo y restandole 1
#Negar se puede realizar asi, ej: negar 3 dará como resultado -4
#xor
print("xor",num2^num1) # "^" representa una operación xor
"""
010
011
___
001
""" #una operación "xor" devuelve 1 si ambos bits son diferentes
Programa 6
#delimitadores
n1=3
n2=10
n3=8
n4=7
print(n1*(n2+n3)/n4-(n4**n1))
n1+=n2 #es lo mismo que n1= n1+n2
print(n1)
n1*=n2 #es lo mismo que n1= n1*n2
print(n1)
n1/=n3 #es lo mismo que n1= n1/n3
print(n1)
n1**=n4 #es lo mismo que n1= n1^4
print(n1)
n1//=n4 #es lo mismo que n1= n1//n4,// es división entera
print(n1)
n1%=n2 #es lo mismo que n1= n1%n2, % calcula el residuo
print(n1)
Programa 7
#operadores de desplazamiento
#izquierda multiplica en binario
#<< desplaza a la izquierda
#>> desplaza a la derecha
#cada desplazamiento a la izquierda multiplica por 2
print("3<<1: ", 3<<1)
"""
011 empuja a la izquierda
110 queda esto
1100 empujo 1
110000 empujo 2
"""
print("6<<1: ", 6<<1)#6*2=12
print("12<<2: ", 12<<2)#(12*2)*2=48
#derecha divide en binario
#divide entre 2
print("48>>1: ", 48>>1)#48/2=24
"""
110000 empujo 1
011000 queda esto
empujo 2
000110
"""
print("24>>2: ", 24>>2)#(24/2)/2=6
Programa 8
#Operadores relacionales
#Los operadores relacionales regresan True si es verdadera la asignación
#Y regresan False si es falsa
n1=5 #un igual es una asignación
n2=8
print("Diferente", n1!=n2)#pregunta si n1 es diferente que n2
print("Igual", n1==n2) #igualación, pregunta si n1 es igual que n2
print("Mayor que", n1>n2)#pregunta si n1 es mayor que n2
print("Mayor igual", n1>=n2)#pregunta si n1 es mayor o igual que n2
print("Menor que", n1<n2)#)#pregunta si n1 es menor que n2
print("Menor igual", n1<=n2)#pregunta si n1 es menor o igual que n2
n3=n1==n2
#a n3 se le asignó el resultado relacional de preguntar si n1 es igual a n2
n4=n1!=n2
#a n4 se le asignó el resultado relacional de preguntar si n1 es diferente a n2
print("5==8", n3)
print("5!=8", n4)
Programa 9
#tipos de datos
n1=3 #entero
n2=123456789012345678901234567891234567890123456789012345678912345 #long
n3=5.123654 #float
#cadenas
cad1='hola'
cad2="como estas"
cad3="""espero
que
bien
"""
#estructuras
lista=[1,2.345,'hola',True]#listas, cambiar de valor, son mutables
#Las listas pueden ser modificadas
dicc={520:'luis',532:'javier'} #diccionario cambian de valor
#Los diccionarios pueden ser modificados
tupla=(2, 3.14,True)#tuplas no pueden ser modificadas
print("lista", lista, type(lista))
#print(help(lista)) # da información sobre lo que se puede hacer con la lista
print("diccionario:", dicc, type(dicc))
print("tupla: ", tupla, type(tupla))
Programa 10
import sys#permite la función syz.getsizeof() , sin esto marcaba error
#Datos enteros
x=250**250
print(x)
y=2**64
print(y)
#binarios
a=0b111#define en "a" el numero 111 en binario
print(a,type(a))#print imprimira "a" en base decimal y como entero
b=0x117#define en "b" el numero 117 en hexadecimal
print(b,type(b))#print imprimira "b" en base decimal y como entero
c=0o117#define en "c" el numerero 117 en octal
print(c, type(c))#print imprimira "c" en base decimal y como entero
z=5**1000
print(sys.getsizeof(z),type(z))#calcula el tamaño en bits de z y su clase
ab=5
print(sys.getsizeof(ab),type(ab))# calcula el tamaño en bits de ab y su clase
print(z)
Programa 11
x=5**10000#es un valor muy grande el resultado
#print(x)
#print(5e200**2)#no lo imprimira por ser muy grande
#print(2e2000**2)#no lo imprimira por ser muy grande
n1=int(1.6) #conversiones o casting, converti 1.6 a entero
print(n1)
print("*******************************************")#separador visual
#booleanos
print(1<0)#evalua si 1 es menor a 0
print(1<=0)#evalua si 1 es menor o igual a 0
print(9==9)#evalua si 9 es igual a 9
print(bool(10))#cualquier valor distinto a 0 es True
print(bool(-10))
print(bool("algo"))#cualquier cadena no vacia es True
print(bool(0.2))
print(bool([]))#las estructuras vacias son False
#flotante
f=2.10e-3 #2.10 multiplicado por 10 elevado a la -3
print(f)
n2=float(True)#True al equivale 1, en flotante equivaldra 1.0
print(n2)
n3=float(1)#convierte 1 a un valor flotante (1.0)
print(n3)
print("*******************************************")#separador visual
nf=0.999999999999999999999
print("nf", nf)#nf al ser impreso sera mostrado de forma redondeada
print(sys.float_info.min)#muestra el valor minimo de un flotante
print(sys.float_info.max)#muestra el valor maximo de un flotante
f=1.79769313348623157e+310
print(f)#imprimira inf(infinito) por ser infinito en flotante
nf2=float('inf')
print(nf2)#imprimirá inf
print("{:.20f}".format(1.0/3.0))#imprime 1/3 con 20 decimales en flotante
print(0.1+0.1+0.1-0.3)#mostrara un valor muy cercano a 0 pero no 0
Programa 12
#imaginarios
#compuesto de la parte real y de la imaginaria
a=5+5j#5 es la parte real y 5j la imaginaria
b=1.3-7j
c=0.3j #la parte real sera cero
#telecomunicaciones y electromagnetismo y corrientes electricas
print(c)
print(c.real) #flotante, imprimira la parte real
print(c.imag)#imprimira la parte imaginaria
print(type(c))#mostrara que clase es 0.3j(complex)
d=complex(3,8)#al convertirlo a complejo 3 sera la parte real y 8 la imaginaria
print(d)
print(a+b)
print(a*b)
print(a/b)
#al hacer operaciones con numeros complejos la parte real suma a la real
#Y la parte imaginaria suma a la imaginaria
a=1+1j
print(a.conjugate()) #negar la parte imaginaria
Programa 13
import cmath
#la libreria cmat permite realizar operaciones con numeros complejos
print(cmath.phase(complex(5,0))) #phase es el angulo del vector
print(cmath.polar(complex(5,0)))#polar módulo y ángulo
#inmutable
cad="hola que tal"
print(cad)
print(type(cad))
cad1='' #cadena vacia
#cad2="esto es "realmente" genial"# no es valido
cad2="esto es \"realmente\"genial" #secuencia de escape
print(cad2)
cad3="esto es \n realmente \t genial" #secuencias de escape
print(cad3)
print("\165\165") #imprimir el asciii del numero dado, imprimirá uu
print("********************************************************")
x=5
s="el numero es: "+str(x)
print(s)
# %mascaras %d es un digito %i entero
cad="los numeros son %d y %d" % (5,10)
print(cad)
cad1="los numeros son {} y {}".format(8,13)#.format imprimira 8,13 dentro de los corchetes
print(cad1)
a=12
b=23
cad4=f'los numeros son {a} y {b}'
print(cad4)
cad5=f'a+b ={a+b}'
print(cad5)
s1="parte uno"
s2="parte dos"
print(s1 +" "+s2)
s3="hola"
print(s3*4)#es posible realizar operaciones con cadenas
#in (dentro)
print("hola" in "hola python") #valor booleano, regresara True
#por que hola esta tambien en hola python
print(chr(34576))#chr convierte un numero en su simbolo correspondiente
print(ord("π"))
print(chr(129429))
print(chr(128429))
print(chr(128038))
print(chr(129430))
print(chr(128049))
#nota: mi computadora no puedo mostrar los simbolos
Programa 14
#Nota de remisión
#ejemplo
"""
-------------------------------------------------------
| logo No. 123 |
| |
| |
|No. Cantidad Precio |
|1 5 $200 |
|2 10 $50 |
| |
| |
| total 1500 |
| iva 240 |
| Total a pagar $1740 |
| |
| |
------------------------------------------------------|
"""
#nota de remisión realizada por mi
No1= "1"
No2="2"
cantidad1=5
cantidad2=10
precio1=200
precio2=50
subtotal1=cantidad1*precio1
subtotal2=cantidad2*precio2
subtotal=subtotal1+subtotal2
iva=(subtotal/100)*16
Total=subtotal+iva
nota= """
-------------------------------------------------------
| No. 123 |
| |
| |
|No. Cantidad Precio |
|{} {} {:.2f} |
|{} {} {:.2f} |
| |
| |
| total {:.2f} |
| iva {:.2f} |
| Total a pagar {:.2f} |
| |
| |
------------------------------------------------------|
""".format(No1,No2,cantidad1,cantidad2,precio1, precio2,subtotal, iva,Total)
print(nota)
#Utilice .format para esta nota de remisión
#No agregue logo por que mi computadora no imprime simbolos al imprimir con chr
#:.2f fue para mostrar con 2 decimales los valores monetarios
#utilice una cadena de comillas triples para declarar la nota completa
#el .format lo use al final de la nota con las variables previamente ya declaradas
Programa 15
x=str(10.4)#se guardo en x una cadena que valia 10.4
print(x)#10.4
print(x[0])#imprimira 1 por estar en la posición 0
print(x[-1])#4
#la posición -1 corresponde a la ultima posición (contando de izquierda a derecha)
print(x[0:2])#10 imprime desde la posicion 0 y 1
#cadenas []
cad="supercalifragilisticoespialidoso"
print(cad[:5])#super, no poner nada en el inicio indica 0
print(cad[9:15]) #inicio:final,fragil
print(cad[-4:])#doso, muestra desde la ultima posición
print(cad[0:-1:2])#incio:final:salto
print(cad[::2])#inicio: 0, final:-1, salto: 2
#Métodos
print(cad.capitalize())#Pone en mayuscula la primer letra
print(cad.lower())#Pone en minusculas todo
cad="SuperCalifragilisticoEspialidoso"
print(cad.swapcase())#intercambia mayúsculas por minusculas
print(cad.upper())#convierte todos los carácteres en mayúsculas
print(cad.count("a"))#cuenta las a
print(cad.isalpha())#devuelve si es verdadero que todos los caracteres son alfabeticos sin numeros
print(cad.isalnum())#devuelve si es verdadero que todos los caracteres son alfanumericos
#letras o numeros
Programa 16
n=input("Dame un numero")
print(n)
n1=int(input("Dame un numero otra vez"))
print(n1)
#pedir numero, guardarlo, convertirlo a cadena, preguntar si es alfanumérico
num=input("Dame un numero otra vez ")
nums=str(num)
print(nums.isalpha())
#pedir al usuario 3 numeros y juntarlos en una sola cadena
num1=input("Dame el primer numero")
num2=input("Dame el segundo numero")
num3=input("Dame el tercer numero")
n1=str(num1)
n2=str(num2)
n3=str(num3)
suma=n1+n2+n3
print(suma)
print(suma.isalnum())
#pedi 3 numeros y cada uno lo converti en cadena
#despues los sume haciendolos un solo termino
#imprimi y pregunte si esa suma que hacia una unión de las 3 cadenas era alfanumérico
#Otro método diferente
if(suma.isalpha()==False):
print(suma)
else:
print("no son numeros")
#este metodo consiste a que si la suma de las 3 cadenas es alfanumerica y no alfabética la imprimirá
#de lo contrario arrojara el mensaje de que no son numeros
Programa 17
sep=' ' #separador
pal=["una","dos","tres"] #s=[a,b,c]
cad=sep.join(pal) #cad2=sep.join(str,pal)
#aqui son unidas mediante .join sep que es un separador con la lista llamada pal
print(cad) #cad2
cadena="esto, es, un, ejemplo"
print(cadena.split(","))#Divide la cadena en una lista usando la coma como separador
cadtmp=cadena.split(",")
print(cadtmp[0]+sep+cadtmp[1])#imprime de la cadena temporal creada las posiciones 0 y 1
# y los une con el separador
Programa 18
#operadores especiales
#is devolver verdadero si esta la referencia del objeto
a=8
b=5
print(a is b)
print(id(a)) #id es un identificador
print(id(b)) #si a y b son iguales imprimiran el mismo id
#en este caso b es diferente e imprimira un id diferente
#lista
a=[1,2,3]
b=[1,2,3]
print(a == b)
print("is",a is b)#pregunta si a es b son el mismo objeto,False
print(a != b)
print("is not", a is not b) #pregunta si a no son el mismo objeto,True
#in si el elemento esta contenido en...
print(1 in b)#pregunta si 1 esta dentro de b
#not in
print(5 not in b) #pregunta si 5 no esta contenido en b
#print(3 in 3)# marca error por que no tiene sentido preguntar si un elemento esta en el mismo elemento
print([1,2] in [4, [1,2],True])#devolvera True
#por que [1,2] esta contenido en la otra lista tambien
cad="hipopotamo"
#tamaño
print(len(cad))#regresa la longitud de la palabra dentro de cad
#Devolvera 10 por ser su longitud
Programa 19
# listas
lista=[]#lista vacia, sirve para ser llenada
listauno=list()#lista vacia
pide=input("Dame algo para mi lista: ")
lista.append(pide)#.append sirve para agregar algo a una lista
print(lista)
#agregar 2 elementos
elemento1=input("Dame el primer elemento extra: ")
elemento2=input("Dame el segundo elemento extra: ")
lista.append(elemento1)#de esta forma agregue uno por uno cada elemento
lista.append(elemento2)
print(lista)
#otro metodo para agregar 2 elementos extra
pide2=input("Dame algo para mi lista: ")
lista.insert(0,pide2)#inserta lo que pedi en la lista en la posición 0
print(lista)
#Ejemplo de lista
ejemlis=[100,False,"algo",[1,2]]
print(ejemlis[3][1])#mostrar el 2
#ejemplo
ejlis=[8,[1,2]]
print(ejlis[1][1]) #extraer el valor de 2
#modificar el contenido de la lista
ejlis[1]=[0,1]
print(ejlis[1][1])
print(ejlis)
#ejemplo
est=["Juan",[8,7,9,4],"Pedro",[7,5,9,7]]
#quiero cambiar el 4 por un 7 de Juan
est[1][-1]=7
est[1][3]=7
print(est)
#diferencia append y el insert
'''pedir 2 nombres y los van a agregar
juan
daniel
cadena=juan, daniel
listadecadena= ['juan','daniel']
'''
#tarea de clase
nomb1=input("Dame el primer nombre")
nomb2=input("Dame un segundo nombre")
cad=nomb1+" "+nomb2
lista=cad.split(' ')
print("lista",lista)
#extend()
lista.extend([nomb1,nomb2])#utilice .extend para agregar a una lista los dos nombres pedidos
print("despues extend",lista)
Programa 20
#listas
est=["Juan",[7,8,9,4],"Pedro",[7,9,7,8]]
#[7,9,8,[7,7,8]]
est[0]="Luis"#cambia Juan por Luis
print(est[1][3])#mostrara el 4
est[1][3]=7#cambia el 4 por 7
est[3][1]=6#cambia el nueve de la lista en la posición 3 por un 6
print(est)
print("Elementos en la lista: ",len(est))
print("cuantos sietes hay: ",est.count(7))#dara 0 por que se tienen que especificar
#las listas para contar
n=est[1].count(7)+est[3].count(7)
print(n)
est[1][3]=[7,7,8]
print(est)
est.pop() #sirve para eliminar el ultimo elemento o un elemento dado
print(est)
est.reverse() # sirve para invertir la lista
print(est)
#print(help(list)) #ayuda integrada
Programa 21
#SET
s=set([7,5,3,2,1]) #inmutables
print(s,type(s))#imprime la lista s y de que tipo es (set)
s1={3,5,6,7,8}
print(s1,type(s1))#imprime la lista s1 y de que tipo es (set)
#s[0]=89 #marcará error por que un set no puede mostrar ni modificar elementos
print('')
print(len(s1))#imprime cuantos valores tiene s1
print(s | s1) #OR agrupa en orden los elementos unicos
print(s & s1) #AND imprime los elementos que se repiten
print(s ^ s1) #XOR imprime los elementos que no se repiten
s.add(10)#agrega un 10 a la lista
print(s)
s.remove(10)#elimina el 10 de la lista, da error si no esta
print(s)
s.discard(10)#elimina el 10 de la lista, no da error si no esta
s.pop()#elimina el ultimo elemento de la lista
s.clear()#vacia la lista
print(s)
s2={3,5,6,7,8}
print(s1.intersection(s2))#imprime los elementos comunes entre s1 y s2
print(s1.union(s2))#impime la union entre s1 y s2 de los elementos no repetido
print(help(set))#imprime ayuda integrada relacionada al set
Programa 22
#tuplas
#Una tupla es una secuencia de valores agregados
tupla=(1,2,3)
print(tupla, type(tupla))
tup=4,5,6 #se pueden declarar sin parentesis
print(tup, type(tup))
#inmutables
#tup[1]=8 #marcara error por que las tuplas son inmutables
tu=1,2,3,(5,6,7),9 #pueden tener sublistas
print(tu)
t=1,2,('a','b','c'),8
print(t[2][2])
unalis=[7,8,9]
print(unalis,type(unalis))
unatup=tuple(unalis)#una lista se puede convertir en una tupla
print(unatup,type(unatup))
otratup=(2,)#una tupla con un elemento seguido de una coma es una tupla de un elemento
#print(help(tuple))
Programa 23
#diccionario
#ejemplo
dicci={ 100:"David",101:"Rodrigo"}
dicest={'nombre':"David",'edad':19,'materias':
['visual','diferenciales','circuitos']}
print(dicest['nombre'])
print(dicest['edad'])
print(dicest['materias'])
print(dicest['materias'][1])
dicpru=dict(nom='Rodrigo',apell='Armas',edad=19)
print(dicpru)
#programa que capture 3 datos
#nom=input("dame nombre: ")
#convierta en diccionario
#imprima el diccionario
nombre1=input("dame un nombre")#actividad participacion
edad1=input("dame la edad")
materia1=input("dame 1 materia")
lista=[]
lista.extend([nombre1,edad1,materia1])#cree una lista con lo que pedi
print(lista)
lista2=[]
lista2.extend(['nombre','edad','materia'])#cree una 2da lista
print(lista2)
dicc2=dict(zip(lista2,[nombre1,edad1,materia1]))#use zip para crear el diccionario
print(dicc2)#hasta aqui forma parte la actividad (participacion de clase)
#ejemplo clase
dosdicc=dict(zip('abcd',[1,2,4,3]))
print(dosdicc)
tresdicc={'a':1,'b':3,'c':6,'d':4}
elem=tresdicc.items()#.items() devuelve una lista de tuplas
#cada tupla se compone de dos elementos (clave-valor)
print(elem)
llaves=tresdicc.keys()#devuelve una lista de elementos
#conformada por las claves del diccionario
print(llaves)
valor=tresdicc.values()#devuelve una lista de elementos
#conformada por los valores del diccionario
print(valor)
dicpru.clear()#devuelve el diccionario vacio
dicpru=dicest.copy()#retoma una copia del diccionario original
print("copiado",dicpru)
#ejemplo
cuatdicc=dict.fromkeys(['a','b','c','d'],1)
print("fromkeys: ",cuatdicc)
#actividad tarea de clase
dicc4 = dict.fromkeys(['nombre', 'edad','materia'])#diccionario sin valores
dicc4.update(dicc2)#agregue los elementos del diccionario 2 que ya contenia el nombre,edad,materia al diccionario 1
#usando .update
print("Diccionario usando fromkeys", dicc4)
Comentarios
Publicar un comentario