Skip to content

Commit 1f4fc68

Browse files
Add files via upload
Ejemplos y ejercicios del capítulo 4.
1 parent fe22fd7 commit 1f4fc68

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+2501
-0
lines changed

Cap4/Ejemplo 4_1.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
@author: guardati
4+
Ejemplo 4_1
5+
Declaración e inicialización de variables tipo arreglo.
6+
"""
7+
8+
import array
9+
10+
print('\nPosibles códigos de tipo:', array.typecodes)
11+
12+
# Arreglo de enteros con signo, sin valores iniciales.
13+
impares = array.array('b')
14+
# Arreglo de enteros con signo. Valores iniciales a partir de una lista.
15+
pares = array.array('b', [4, 12, -34, 48, -18])
16+
# Arreglo de caracteres. Valores iniciales a partir de una cadena.
17+
letras = array.array('u', 'hola')
18+
# Arreglo de números reales. Valores iniciales a partir de un conjunto.
19+
arre1 = array.array('f', {18, 5.6, 99, 12.5})
20+
# Arreglo de números enteros.
21+
# Valores iniciales a partir de un diccionario: toma las claves.
22+
arre2 = array.array('i', {118: 'queso', 124: 'yogur', 110: 'crema'})
23+
# Arreglo de números enteros. Valores iniciales a partir de otro arreglo.
24+
arre3 = array.array('i', arre2)
25+
26+
print('\nTipo de dato:', type(pares))
27+
print('Impresión de una variable tipo arreglo:', pares)
28+
print('Impresión del contenido de un arreglo: ', end = '')
29+
for num in pares:
30+
print(num, ' ', end = '')
31+
32+
# Acceso a uno de los elementos del arreglo.
33+
print('\n\nPrimer elemento:', pares[0])
34+
print('Último elemento:', pares[-1])
35+
# Índice fuera de rango. Provoca: IndexError: array index out of range.
36+
# print('Octavo elemento:', pares[7])
37+
38+

Cap4/Ejemplo 4_2.py

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
@author: guardati
4+
Ejemplo 4_2
5+
Métodos para trabajar con arreglos.
6+
"""
7+
import array
8+
9+
impares = array.array('b')
10+
pares = array.array('b', [4, 12, -34, 48, -18])
11+
letras = array.array('u', 'hola')
12+
13+
# Agrega al final del arreglo.
14+
letras.append('!')
15+
# letras.append(45.23) # TypeError: ...
16+
17+
# Cantidad de elementos almacenados en el arreglo.
18+
print('\nTotal de elementos en "letras":', len(letras))
19+
print('Total de elementos en "impares":', len(impares))
20+
21+
# Para conocer el código del tipo del arreglo.
22+
print('El código del tipo:', letras.typecode)
23+
# Para conocer el tamaño de un elemento del arreglo.
24+
print('El tamaño de un elemento:', letras.itemsize)
25+
26+
# Cuenta el número de veces que el parámetro está en el arreglo.
27+
print('\nTotal de "h" en "letras":', letras.count('h'))
28+
29+
# Agrega varios elementos a un arreglo.
30+
# A partir de una cadena.
31+
letras.extend('saludos')
32+
print('\n"letras" extendido: ', end = '')
33+
for c in letras:
34+
print(c, ' ', end = '')
35+
# A partir de una tupla y se extiende un arreglo vacío.
36+
impares.extend((13, 41, 87, 55, 37, 49))
37+
print('\n"impares" extendido: ', end = '')
38+
for n in impares:
39+
print(n, ' ', end = '')
40+
41+
# Regresa la posición del valor 48.
42+
posicion = pares.index(48)
43+
print('\n\nEl 48 está en la posición:', posicion)
44+
# indice = pares.index(101) # ValueError:...
45+
46+
# Inserta el 7 en la posición 4: queda como 5to. elemento.
47+
impares.insert(4, 7)
48+
# Inserta el 17 al final.
49+
impares.insert(40, 17)
50+
# Posición negativa: se considera de derecha a izquierda.
51+
impares.insert(-4, 77)
52+
print('\n"impares" luego de insertar: 7, 17 y 77')
53+
for n in impares:
54+
print(n, ' ', end = '')
55+
56+
# Quita y regresa el elemento de la posición dada.
57+
print('\n\nElemento quitado de "letras":', letras.pop(0)) # Primero.
58+
print('Elemento quitado de "impares":', impares.pop(-1)) # Último.
59+
print('Elemento quitado de "impares":', impares.pop()) # Último.
60+
61+
# Quita la primera ocurrencia de 'a'.
62+
letras.remove('a')
63+
64+
# Invierte el orden del arreglo.
65+
letras.reverse()
66+
print('\nLuego de quitar una "a" y de invertir el orden de "letras"')
67+
for c in letras:
68+
print(c, ' ', end = '')
69+
70+
# Quita el primer elemento.
71+
del impares[0]
72+
print('\n\nLuego de quitar el primer elemento de "impares":')
73+
for n in impares:
74+
print(n, ' ', end = '')
75+
76+
# Borra el arreglo completo.
77+
del impares
78+
79+
80+

Cap4/Ejemplo 4_3.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
@author: guardati
4+
Ejemplo 4_3
5+
Funciones y operadores con arreglos.
6+
Subdivisión de arreglos.
7+
"""
8+
import array
9+
import arreglo
10+
11+
letras = array.array('u', 'susurros')
12+
pares = array.array('b', [4, 12, -34, 48, -18])
13+
impares = array.array('b', [17, 21, 13, 5, 47, 53])
14+
15+
conv = pares.tobytes()
16+
print('\nLuego de convertir a bytes: ', end = '')
17+
print(arreglo.a_cadena(conv))
18+
19+
lista = letras.tolist()
20+
print('\nLista obtenida:', lista)
21+
22+
# Genera un nuevo arreglo con los elementos de los 2 arreglos.
23+
numeros = pares + impares
24+
print('\nNuevo arreglo: pares + impares.')
25+
print(arreglo.a_cadena(numeros))
26+
27+
# Genera un nuevo arreglo con los elementos de impares repetidos 2 veces.
28+
nuevo = impares * 2
29+
print('\nNuevo arreglo: elementos de impares repetidos 2 veces.')
30+
print(arreglo.a_cadena(nuevo))
31+
32+
# Repite 3 veces los elementos de pares y modifica a pares.
33+
pares *= 3
34+
print('\nPares luego de repetir 3 veces su contenido.')
35+
print(arreglo.a_cadena(pares))
36+
37+
# Subdivisión o partición (slicing) de arreglos.
38+
print('\nDel tercero al quinto:', arreglo.a_cadena(nuevo[2:5]))
39+
print('\nDesde el primero (ignora los últimos 5):', arreglo.a_cadena(nuevo[:-5]))
40+
print('\nDesde el cuarto (ignora los últimos 5):', arreglo.a_cadena(nuevo[3:-5]))
41+
print('\nDesde el cuarto hasta el final:', arreglo.a_cadena(nuevo[3:]))
42+
print('\nTodo el arreglo:', arreglo.a_cadena(nuevo[:]))
43+
print('\nTomando de 2 en 2, del primero al último:', arreglo.a_cadena(nuevo[::2]))
44+
45+
46+

Cap4/Ejemplo 4_4.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
@author: guardati
4+
Ejemplo 4_4
5+
Arreglos y archivos binarios.
6+
"""
7+
8+
import array
9+
10+
# =============================================================================
11+
# Ejemplo 1: se guarda un arreglo numérico en un archivo binario.
12+
# =============================================================================
13+
arre = array.array('b')
14+
file_s = open('numeros', 'wb')
15+
n = int(input('\nTotal de números: '))
16+
for _ in range (0, n):
17+
num = int(input('¿Números?: '))
18+
arre.append(num)
19+
arre.tofile(file_s)
20+
file_s.close()
21+
22+
# =============================================================================
23+
# Ejemplo 2: se guarda un arreglo de caracteres en un archivo binario.
24+
# =============================================================================
25+
letras = array.array('u', 'tres tristes tigres comen trigo')
26+
file_s = open('letras', 'wb')
27+
letras.tofile(file_s)
28+
file_s.close()
29+
30+
# =============================================================================
31+
# Ejemplo 3: se agregan al archivo de letras el contenido del arreglo
32+
# de vocales.
33+
# =============================================================================
34+
vocales = array.array('u', 'aeiou')
35+
file_a = open('letras', 'ab')
36+
vocales.tofile(file_a)
37+
file_a.close()
38+
39+
# =============================================================================
40+
# Ejemplo 4: se lee un arreglo de números desde un archivo binario.
41+
# =============================================================================
42+
numeros = array.array('b')
43+
file_e = open('numeros', 'rb')
44+
numeros.fromfile(file_e, n)
45+
print(numeros)
46+
47+
# =============================================================================
48+
# Ejemplo 5: se lee un arreglo de caracteres desde un archivo binario.
49+
# =============================================================================
50+
caracteres = array.array('u')
51+
file_e = open('letras', 'rb')
52+
caracteres.fromfile(file_e, 36)
53+
print(caracteres)

Cap4/Ejemplo 4_5.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
@author: guardati
4+
Ejemplo 4_5
5+
Ejemplos de algunas operaciones con arreglos bidimensionales.
6+
"""
7+
8+
import matrices
9+
10+
# =============================================================================
11+
# Construcción e inicialización de arreglos bidimensionales.
12+
# =============================================================================
13+
f1 = int(input('\nIngrese total de filas: '))
14+
c1 = int(input('Ingrese total de columnas: '))
15+
m1 = matrices.forma_matriz_1(f1, c1)
16+
print(f'\nUsando la función 1:\n{matrices.a_cadena(m1)}')
17+
18+
f2 = int(input('\nIngrese total de filas: '))
19+
c2 = int(input('Ingrese total de columnas: '))
20+
m2 = matrices.forma_matriz_2(f2, c2)
21+
print(f'\nUsando la función 2:\n{matrices.a_cadena(m2)}')
22+
23+
f3 = int(input('\nIngrese total de filas: '))
24+
c3 = int(input('Ingrese total de columnas: '))
25+
m3 = matrices.forma_matriz_3(f3, c3)
26+
print(f'\nUsando la función 3:\n{matrices.a_cadena(m3)}')
27+
28+
# =============================================================================
29+
# Acceso a arreglos bidimensionales.
30+
# =============================================================================
31+
# Se modifica el valor de la casilla del extremo superior izquierdo.
32+
m2[0][0] = 5
33+
34+
# Se modifica el valor de la última fila.
35+
m2[f2 - 1] = [8, 9]
36+
37+
# Se agrega una nueva fila.
38+
m2.insert(1, [2, 4])
39+
print(f'\nLuego de modificar algunas casillas y de agregar una fila:\n'
40+
f'{matrices.a_cadena(m2)}')
41+
42+
# Se elimina la primera fila.
43+
del m2[0]
44+
print(f'\nLuego de eliminar la primera fila:\n{matrices.a_cadena(m2)}')
45+
46+
47+
48+

Cap4/Programa 4_1.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
@author: guardati
4+
Problema 4.1
5+
Determina si la frase contiene a las 5 vocales, cuántas veces la letra "m"
6+
está en la frase y, por último, quita todas las letras "t".
7+
"""
8+
import array
9+
10+
frase = input('Ingrese la frase que quiere analizar: ')
11+
arreglo = array.array('u', frase)
12+
try:
13+
arreglo.index('a')
14+
arreglo.index('e')
15+
arreglo.index('i')
16+
arreglo.index('o')
17+
arreglo.index('u')
18+
respuesta = True
19+
except:
20+
respuesta = False
21+
if respuesta:
22+
print('\nLa frase contiene las 5 vocales.')
23+
else:
24+
print('\nLa frase no contiene las 5 vocales.')
25+
cuenta_m = arreglo.count('m')
26+
if cuenta_m > 0:
27+
print(f'La letra "m" aparece: {cuenta_m} veces.')
28+
else:
29+
print(f'La letra "m" no aparece en la frase.')
30+
cuenta_t = arreglo.count('t')
31+
for _ in range(0, cuenta_t):
32+
arreglo.remove('t')
33+
print('La frase luego de quitar todas las "t":'.upper())
34+
for letra in arreglo:
35+
print(letra, end = '')
36+
37+
38+
39+

Cap4/Programa 4_10.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
@author: guardati
4+
Problema 4.12
5+
Programa en el cual se lee un arreglo desde un archivo binario, se lo ordena
6+
y se lo utiliza para probar la solución de la función pedida en el problema
7+
4.12.
8+
"""
9+
import arreglo
10+
import array
11+
12+
arre = array.array('b')
13+
try:
14+
file_e = open('numeros', 'rb')
15+
arre.fromfile(file_e, 15)
16+
file_e.close()
17+
except Exception as error:
18+
print('\nHubo un error:', error)
19+
else:
20+
arreglo.ordena_crec(arre)
21+
print('\nArreglo:', arreglo.a_cadena(arre))
22+
# CP1: se dan datos que no provocan errores.
23+
arreglo.cambia_ordenado(arre, 21, 25)
24+
print('\nCP1: se cambió 21 por 25 -->', arreglo.a_cadena(arre))
25+
# CP2: el segundo dato altera el orden.
26+
try:
27+
arreglo.cambia_ordenado(arre, 14, 17)
28+
print('CP2: se cambió 14 por 17 -->', arreglo.a_cadena(arre))
29+
except Exception as error:
30+
print('CP2: se intentó cambiar 14 por 17 -->', error)
31+
# CP3: el dato a cambiar no está en el arreglo.
32+
try:
33+
arreglo.cambia_ordenado(arre, 4, 3)
34+
print('CP3: se cambió 4 por 3 -->', arreglo.a_cadena(arre))
35+
except Exception as error:
36+
print('CP3: se intentó cambiar 4 por 3 -->', error)
37+
# CP4: el dato que se va a cambiar es el primero.
38+
arreglo.cambia_ordenado(arre, 5, 3)
39+
print('CP4: se cambió 5 por 3 -->', arreglo.a_cadena(arre))
40+
# CP5: el dato que se va a cambiar es el último.
41+
arreglo.cambia_ordenado(arre, 44, 51)
42+
print('CP5: se cambió 44 por 51 -->', arreglo.a_cadena(arre))

0 commit comments

Comments
 (0)