Python AD2021
Python AD2021
Primavera 2021
1
2
Interfaz en línea
para programar
en python
https://www.onlinegdb.com/
3
4
Entrada,
impresión y
números
5
Leer y escribir en python
a)
b)
6
Suma de números y cadenas
d)
c)
e)
7
Ejercicios 1_1
1. N estudiantes toman K manzanas y las distribuyen entre ellas de manera uniforme. La parte restante (la indivisible)
permanece en la cesta. ¿Cuántas manzanas obtendrá cada estudiante? ¿Cuántas manzanas quedarán en la
canasta? El programa lee los números N y K. Debe imprimir las dos respuestas para las preguntas anteriores.
2. Escriba un programa que lea un número entero e imprima sus números anteriores y siguientes. No debe haber un
espacio antes del período. Se puede convertir los números a cadenas usando la función “str”.
3. Una marca de tiempo son tres números: una cantidad de horas, minutos y segundos. Dadas dos marcas de
tiempo, calcule cuántos segundos hay entre ellas.
4. Una escuela decidió reemplazar los escritorios en tres aulas. Cada escritorio tiene dos estudiantes. Dado el
número de estudiantes en cada clase, imprima el menor número posible de escritorios que se puedan comprar. El
programa debe leer tres enteros: el número de estudiantes en cada una de las tres clases, a, b y c,
respectivamente. En la primera prueba hay tres grupos. El primer grupo tiene 20 estudiantes y, por lo tanto,
necesita 10 escritorios. El segundo grupo tiene 21 estudiantes, por lo que pueden sobrevivir con no menos de 11
escritorios. Once escritorios también son suficientes para el tercer grupo de 22 estudiantes. Entonces necesitamos
32 escritorios en total.
8
Número enteros y
flotantes
9
Aritmética entera y números de
punto flotante
d)
a)
b)
e)
c)
f)
10
g) h)
https://docs.python.org/3.6/library/math.html
Módulo matemático
11
Ejercicios 1_2
● Un automóvil puede cubrir una distancia de N kilómetros por día. ¿Cuántos días tomará cubrir
una ruta de longitud M kilómetros? El programa obtiene dos números: N y M.
● La manecilla de hora girada en grados α desde la medianoche. Determine el ángulo por el cual
la manecilla de minutos giró desde el comienzo de la hora actual. La entrada y la salida en
estos problemas son números de punto flotante.
12
Condiciones
if-then-else
13
b)
a)
c)
d)
Sintaxis y
condiciones
anidadas
14
Operadores de comparación, bool objetos y
operadores lógicos
e)
f) g)
15
h)
Palabra elif
16
Ejercicios 1_3
● La torre de ajedrez se mueve horizontal o verticalmente. Dadas dos celdas diferentes del tablero de ajedrez,
determina si una torre puede pasar de la primera celda a la segunda en un solo movimiento. El programa recibe la
entrada de cuatro números del 1 al 8, cada uno especificando el número de columna y fila, los primeros dos, para
la primera celda, y luego los dos últimos, para la segunda celda. El programa debería generar SÍ, si una torre
puede pasar de la primera celda a la segunda en un movimiento, o NO en caso contrario.
● Dadas dos celdas de un tablero de ajedrez. Si están pintadas en un color, imprima la palabra SÍ, y si está en un
color diferente, NO. El programa recibe la entrada de cuatro números del 1 al 8, cada uno especificando el número
de columna y fila, los primeros dos, para la primera celda, y luego los dos últimos, para la segunda celda.
● El rey del ajedrez se mueve horizontal, vertical o diagonalmente a cualquier celda adyacente. Dadas dos celdas
diferentes del tablero de ajedrez, determina si un rey puede pasar de la primera celda a la segunda en un solo
movimiento. El programa recibe la entrada de cuatro números del 1 al 8, cada uno especificando el número de
columna y fila, los primeros dos, para la primera celda, y luego los dos últimos, para la segunda celda. El programa
debería generar SÍ si un rey puede pasar de la primera celda a la segunda en un movimiento, o NO en caso
contrario.
● En ajedrez, el alfil se mueve en diagonal, cualquier número de casillas. Dadas dos casillas diferentes del tablero de
ajedrez, determina si un alfil puede ir del primero al segundo en un solo movimiento.
17
Bucles
18
a)
b)
d)
f) g)
e)
19
Función print()
20
print()
21
Ejercicios 2_1
● Se dan 10 números en la entrada. Léalos e imprima su suma. Use la menor cantidad de variables
que pueda.
● Dados los números: el primer número en la entrada es N, después de eso se dan N enteros.
Cuente el número de ceros entre los enteros dados e imprímalo. Debe contar el número de
números que son iguales a cero, no el número de dígitos cero.
● Dado un número entero n, imprime la suma 1! +2! +3! + ... + n !. Este problema tiene una solución
con un solo bucle. Y no use la biblioteca de matemáticas.
● Había un conjunto de tarjetas con números del 1 al N. Una de las tarjetas ahora está perdida.
Determine el número en esa tarjeta perdida dados los números para las tarjetas restantes. Dado
un número N, seguido de N - 1 enteros, que representan los números en las cartas restantes
(enteros distintos en el rango de 1 a N). Encuentra e imprime el número en la tarjeta perdida.
22
Instrumentos de
cadena
23
a)
b)
input()
c)
24
Carácter individual:
rebanadas y subcadenas
● La forma más simple de una porción: una porción de ● S[1:4] == 'ell' , y puede obtener la misma
un solo carácter S[i] da el carácter i de la cadena. subcadena usando S[-4:-1] . Puede mezclar índices
Se cuentan los caracteres comenzando desde 0. positivos y negativos en el mismo corte, por ejemplo,
● Si S = 'Hello' , S[0] == 'H' , S[1] == 'e' , S[1:-1] es una subcadena sin el primer y el último
S[2] == 'l' , S[3] == 'l' , S[4] == 'o' . En carácter de la cadena (el corte comienza con el
Python no hay un tipo separado para los caracteres carácter con índice 1 y termina con un índice de -1, sin
de la cadena. incluirlo).
● S[i] también tiene el tipo str , al igual que la ● Para S == 'Hello' la porción S[1:5] devuelve la
cadena fuente. cadena 'ello' , y el resultado es el mismo incluso si
● El número i en S[i] se llama índice . el segundo índice es muy grande, como S[1:100] .
● Si especifica un índice negativo, se cuenta desde el ● Para eliminar el primer carácter de la cadena (su índice
final, comenzando con el número -1 . Es decir, S[-1] es 0), tome la porción S[1:] . De manera similar, si
== 'o' , S[-2] == 'l' , S[-3] == 'l' , S[-4] omite el primer parámetro, Python toma el corte desde
== 'e' , S[-5] == 'H' . el principio de la cadena. Para eliminar el último
carácter de la cadena, puede usar la división S[:-1] .
La porción S[:] coincide con la cadena S misma.
25
a)
b)
Inmutabilidad de las
cadenas y subsecuencia
c)
26
Métodos de
cadena: find() y
rfind()
27
find() y rfind()
a) b)
c)
28
a)
replace()
b)
29
count()
30
Ejercicios 2_2
● Te dan una cuerda. En la primera línea, imprime el tercer carácter de esta
cadena. En la segunda línea, imprima el penúltimo carácter de esta cadena. En
la tercera línea, imprima los primeros cinco caracteres de esta cadena. En la
cuarta línea, imprima todos menos los dos últimos caracteres de esta cadena. En
la quinta línea, imprima todos los caracteres de esta cadena con índices pares
(recuerde que la indexación comienza en 0, por lo que los caracteres se
muestran comenzando por el primero). En la sexta línea, imprima todos los
caracteres de esta cadena con índices impares (es decir, comenzando con el
segundo carácter de la cadena). En la séptima línea, imprima todos los
caracteres de la cadena en orden inverso. En la octava línea, imprima cada
segundo carácter de la cadena en orden inverso, comenzando por el último. En
la novena línea, imprime la longitud de la cadena dada.
● Dada una cadena que consiste en palabras separadas por espacios. Determina
cuántas palabras tiene. Para resolver el problema, use el método count.
● Dada una cadena en la que la letra h aparece al menos dos veces, invierte la
secuencia de caracteres encerrada entre la primera y la última aparición.
31
Ejercicios 2_3
● Dada una cadena. Reemplace cada aparición de la letra h por la letra H, excepto la
primera y la última.
● Dada una cuerda. Córtalo en dos partes "iguales" (si la longitud de la cadena es
impar, coloque el carácter central en la primera cadena, de modo que la primera
cadena contenga un carácter más que la segunda). Ahora imprima una nueva
cadena en una sola fila con la primera y segunda mitad intercambiadas (segunda
mitad primera y primera mitad segundo). No use la declaración si en esta tarea.
● Dada una cadena que consta de exactamente dos palabras separadas por un
espacio. Imprima una nueva cadena con las posiciones de la primera y segunda
palabras intercambiadas (la segunda palabra se imprime primero). Esta tarea no
debe usar bucles y si.
32
While loop
33
a)
while
b)
34
else a)
b)
35
else
36
a)
continue
b)
37
break a)
b)
38
b)
a)
Asignación
múltiple d)
c)
39
Ejercicios 3_1
● Como futuro atleta, acabas de comenzar tu práctica para un próximo evento. Dado que el
primer día corre x millas, y por el evento debe poder correr y millas. Calcule la cantidad de días
necesarios para que finalmente alcance la distancia requerida para el evento, si aumenta su
distancia cada día en un 10% con respecto al día anterior. Imprima un número entero que
represente el número de días para alcanzar la distancia requerida.
● Dada una secuencia de enteros no negativos, donde cada número se escribe en una línea
separada. Determine la longitud de la secuencia, donde la secuencia termina cuando el
número entero es igual a 0. Imprima la longitud de la secuencia (sin contar el número entero
0). Los números que siguen al número 0 deben omitirse.
● Determine el promedio de todos los elementos de la secuencia que termina con el número 0.
● Una secuencia consta de números enteros y termina con el número 0. Determine el elemento
más grande de la secuencia.
40
Ejercicios 3_2
● Una secuencia consta de números enteros y termina con el número 0.
Determine el índice del elemento más grande de la secuencia. Si el
elemento más alto no es único, imprima el índice del primero de ellos.
41
Listas
42
a)
Listas
b)
43
c)
d)
listas
e)
44
g)
f)
h)
listas
45
i)
j)
k)
46
l)
m)
n)
Dividir y unir
números
47
o) p)
r)
q)
s)
t) Generadores
48
Ejercicios 4_1
● Dada una lista de números, encuentre e imprima todos los elementos de la lista con un
número de índice par. (es decir, A [0], A [2], A [4], ...).
● Dada una lista de números, encuentre e imprima todos los elementos que son un número par.
En este caso, use un bucle for que itera sobre la lista y no sobre sus índices. Es decir, no use
range ().
● Dada una lista de números, encuentre e imprima todos los elementos que sean mayores que
el elemento anterior.
● Dada una lista de números, encuentre e imprima los primeros elementos adyacentes que
tienen el mismo signo. Si no existe tal par, deje la salida en blanco.
● Dada una lista de números, determine e imprima la cantidad de elementos que son mayores
que sus dos vecinos.
● El primer y el último elemento de la lista no deben considerarse porque no tienen dos vecinos.
● Dada una lista de números. Determine el elemento en la lista con el mayor valor. Imprima el
valor del elemento más grande y luego el número de índice. Si el elemento más alto no es
único, imprima el índice de la primera instancia.
● Dada una lista de números con todos sus elementos ordenados en orden ascendente,
determine e imprima la cantidad de elementos distintos que contiene.
● Dada una lista de números, intercambie elementos adyacentes en pares (A [0] con A [1], A [2]
con A [3], etc.). Imprime la lista resultante. Si una lista tiene un número impar de elementos,
dejé el último elemento en su lugar.
49
Funciones y recursión
50
Funciones
51
Funciones
52
Variables locales y
globales
53
Variables
locales
54
Variables locales
55
Recursión
56
Ejercicios 4_3
● Dados cuatro números reales que representan coordenadas cartesianas: (x1, y1), (x2, y2).
Escriba una distancia de función (x1, y1, x2, y2) para calcular la distancia entre los puntos (x1,
y1) y (x2, y2). Lea cuatro números reales e imprima la distancia resultante calculada por la
función. La fórmula para la distancia entre dos puntos se puede encontrar en Wolfram.
● Dado un número real positivo a y entero n. Calcular un. Escriba una potencia de función (a, n)
para calcular los resultados usando la función e imprima el resultado de la expresión. No use
la misma función de la biblioteca estándar.
● Escriba una función capitalize (lower_case_word) que tome la palabra minúscula y devuelva la
palabra con la primera letra en mayúscula. Por ejemplo, print (capitalize ('word')) debería
imprimir la palabra Word. Luego, dada una línea de palabras ASCII en minúsculas (texto
separado por un solo espacio), imprímalo con la primera letra de cada palabra en mayúscula
usando la función capitalize (). En Python hay una función ord (carácter), que devuelve el
código de caracteres en el gráfico ASCII, y la función chr (código), que devuelve el propio
carácter del código ASCII. Por ejemplo, ord ('a') == 97, chr (97) == 'a'.
57
Arreglos de dos
dimensiones
58
Arreglos
59
Arreglos
60
Lista anidada
61
Lista anidada
62
Insertar datos a un
arreglo de dos
dimensiones
63
Inserción de
datos
64
Ejemplo de arreglo de
dos dimensiones
65
Otro ejemplo
66
Ejercicios 5_2
● Dado un número entero n, cree una matriz bidimensional de tamaño (n × n) y llénala de la
siguiente manera, con espacios entre cada carácter: Las posiciones en la diagonal menor
(desde la esquina superior derecha hasta la esquina inferior izquierda) reciben 1. Las
posiciones sobre esta diagonal reciben 0. Las posiciones debajo de la diagonal reciben 2.
Imprime los elementos de la matriz resultante.
● Dados dos enteros positivos myn, m líneas de n elementos, que dan una matriz m × n A,
seguida de dos enteros no negativos i y j menos que n, intercambian las columnas i y j de A e
imprimen el resultado. Escriba una función swap_columns (a, i, j) y llámela para intercambiar
las columnas.
● Dados dos enteros positivos myn, m líneas de n elementos, dando una matriz m × n A,
seguida de un número entero c, multiplique cada entrada de la matriz por c e imprima el
resultado.
● Dados tres enteros positivos m, n y r, m líneas de n elementos, dando una matriz m × n A, yn
líneas de elementos r, dando una matriz n × r B, forman la matriz del producto AB, que es la m
× r matriz cuya entrada (i, k) es la suma A [i] [1] ∗ B [1] [k] + ⋯ + A [i] [n] ∗ B [n] [k] e imprime el
resultado.
67
Sets
68
Operaciones con
elementos
69
Operaciones con conjuntos
70
Ejercicios 5_4
● Encuentra tres conjuntos: los colores numéricos de los cubos en ambos conjuntos, los colores
numéricos de los cubos solo en el conjunto de Alice y los colores numéricos de los cubos solo
en el conjunto de Bob. Para cada conjunto, imprima el número de elementos en el conjunto,
seguido de los elementos de color numéricos, ordenados en orden ascendente.
● Dado un número n, seguido de n líneas de texto, imprima el número de palabras distintas que
aparecen en el texto. Para esto, definimos una palabra como una secuencia de caracteres
que no son espacios en blanco, separados por uno o más espacios en blanco o caracteres de
nueva línea. Los signos de puntuación son parte de una palabra, en esta definición.
● Cada estudiante en una escuela determinada habla varios idiomas. Necesitamos determinar
qué idiomas hablan todos los estudiantes, qué idiomas hablan al menos un estudiante. Dado
el número de estudiantes, y luego para cada estudiante el número de idiomas que hablan
seguido del nombre de cada idioma hablado, busque e imprima el número de idiomas
hablados por todos los estudiantes, seguido de una lista de los idiomas por nombre, luego
imprima el número de idiomas hablados por al menos un estudiante, seguido de la lista de
idiomas por nombre. Imprime los idiomas en orden alfabético.
71
Diccionarios
72
Ejemplo
73
Aplicando diccionarios
74
Trabajando con
elementos del diccionario
75
Diccionario iterativo
76
Ejercicios 6_1
● El texto se da en una sola línea. Para cada palabra del texto, cuente el número de apariciones
que tiene delante. Una palabra es una secuencia de caracteres que no son espacios en
blanco. Dos palabras consecutivas están separadas por uno o más espacios. Los signos de
puntuación son parte de una palabra, según esta definición.
● Te dan un diccionario que consiste en pares de palabras. Cada palabra es sinónimo de la otra
palabra en su par. Todas las palabras en el diccionario son diferentes. Después del diccionario
hay una palabra más dada. Encuentra un sinónimo para él.
● Como saben, el presidente de EE. UU. No es elegido por votación directa, sino a través de
una votación de dos pasos. Las primeras elecciones se llevan a cabo en cada estado y
determinan el ganador de las elecciones en ese estado. A partir de entonces, las elecciones
estatales se llevarán a cabo: en esta elección, cada estado tiene un cierto número de votos, el
número de electores de ese estado. En la práctica, todos los electores del estado de votaron
de acuerdo con los resultados de la votación dentro de un estado. La primera línea contiene el
número de registros. Después de eso, cada entrada contiene el nombre del candidato y el
número de votos que obtuvieron en uno de los estados. Cuente los resultados totales de las
elecciones: sume el número de votos para cada candidato. Imprimir candidatos en orden
alfabético.
77
Ejercicios 6_2
● Dado el texto: la primera línea contiene el número de líneas, luego las líneas de palabras.
Imprima la palabra en el texto que ocurre con mayor frecuencia. Si hay muchas de esas
palabras, imprima la que sea menor en orden alfabético.
● El virus atacó el sistema de archivos de la supercomputadora y rompió el control de los
derechos de acceso a los archivos. Para cada archivo hay un conjunto conocido de
operaciones que se le pueden aplicar: escribe W, leer R, ejecutar X.
● La primera línea contiene el número N, el número de archivos contenidos en el sistema de
archivos. Las siguientes N líneas contienen los nombres de archivo y las operaciones
permitidas con ellos, separadas por espacios. La siguiente línea contiene un número entero
M: el número de operaciones para los archivos. En las últimas líneas M, especifique las
operaciones que se solicitan para los archivos. Se puede solicitar un archivo muchas veces.
Debe recuperar el control sobre los derechos de acceso a los archivos. Para cada solicitud, su
programa debe devolver OK si la operación solicitada es válida o Acceso denegado si la
operación no es válida.
● Dada una lista de países y ciudades de cada país. Luego dados los nombres de las ciudades.
Para cada ciudad, especifique el país en el que se encuentra.
78