Está en la página 1de 82

Python

Primavera 2022

1
2
Entrada, impresión y números

3
Leer y escribir en
python
a)

b)

4
Suma de números y
cadenas
d)

c)

e)

5
Ejercicios 1_1
1. Escriba un programa que lea la longitud de la base y la altura de un triángulo
rectángulo e imprima el área. Cada número se da en una línea separada.
2. Escriba un programa que salude al usuario imprimiendo la palabra "Hola",
una coma, el nombre del usuario y un signo de exclamación después. La
salida del programa debe coincidir estrictamente con la deseada, carácter por
carácter. No debe haber ningún espacio entre el nombre y el signo de
exclamación. Puede usar el operador “+” para concatenar dos cadenas.
3. 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.
4. Escriba un programa que lea un número entero e imprima sus números
anteriores y siguientes. Se puede convertir los números a cadenas usando la
función “str”.
5. 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.

6
Número enteros y flotantes

7
Aritmética entera y números de
punto flotante
d)
a)

b)
e)

c)
f)

8
g) h)

https://docs.python.org/3.6/library/math.html

Módulo matemático 9
Ejercicios 1_2
● Dado un número de tres dígitos. Encuentra la suma de sus dígitos.
● Dado un número real positivo, imprime su parte fraccionaria.
● Dado el número entero N, la cantidad de minutos transcurridos desde la
medianoche, ¿cuántas horas y minutos se muestran en el reloj digital de 24
horas? El programa debe imprimir dos números: el número de horas (entre 0
y 23) y el número de minutos (entre 0 y 59). Por ejemplo, si N = 150, entonces
han pasado 150 minutos desde la medianoche, es decir, ahora son las 2:30
a.m. Entonces el programa debería imprimir 2 30.
● Se pasan H horas, M minutos y S segundos desde la medianoche (0 ≤ H <12,
0 ≤ M <60, 0 ≤ S <60). Determine el ángulo (en grados) de la manecilla de la
hora en la esfera del reloj ahora mismo.
● 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.

10
Condiciones if-then-else

11
b)

a)

c)

d)

Sintaxis y
condiciones
anidadas
12
Operadores de comparación, bool
objetos y operadores lógicos

e)

f) g)

13
h)

Palabra elif

14
Ejercicios 1_3
● Para el entero X dado, imprime 1 si es positivo, -1 si es negativo o 0 si
es igual a cero. Usar la cascada if-elif-else.
● Dados tres enteros, imprime el valor más pequeño.
● Dados tres enteros, determine cuántos de ellos son iguales entre sí.
El programa debe imprimir uno de estos números: 3 (si todos son
iguales), 2 (si dos de ellos son iguales y el tercero es diferente) o 0 (si
todos los números son diferentes).
● 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.
● 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.

15
Ejercicios 1_4
● El programa recibe como entrada cuatro números del 1 al 8, especificando los
números de columna y fila del cuadrado inicial y los números de columna y fila
del cuadrado final. El programa debería generar SÍ si un Obispo puede pasar
de la primera casilla a la segunda en un solo movimiento, o NO en caso
contrario.
● La barra de chocolate tiene la forma de un rectángulo dividido en n × m
porciones. La barra de chocolate se puede dividir en dos partes rectangulares
partiéndola a lo largo de una línea recta seleccionada en su patrón. Determine
si es posible dividirlo para que una de las partes tenga exactamente k
cuadrados. El programa lee tres enteros: n, m y k. Debe imprimir SÍ o NO.
● Las reglas en el calendario gregoriano son las siguientes: un año es bisiesto si
su número es exactamente divisible por 4 y no es exactamente divisible por
100; un año siempre es bisiesto si su número es exactamente divisible por
400. Solicitar al usuario un año del calendario y como resultado el programa
debe indicar si es o si será un año bisiesto o no.

16
Bucles

17
a)

b)

Bucles con rango c)

d)

f) g)
e)
18
Función print()

19
print()

20
Ejercicios 2_1
● Dados dos enteros A y B. Imprima todos los números de A a B inclusive, en orden
ascendente, si A <B, o en orden descendente, si A ≥ B.
● Se dan 10 números en la entrada. Léalos e imprima su suma. Use la menor cantidad
de variables que pueda.
● N números se dan en la entrada. Léalos e imprima su suma. La primera línea de
entrada contiene el número entero N, que es el número de números enteros a
seguir. Cada una de las siguientes N líneas contiene un número entero. Imprime la
suma de estos N enteros.
● Para el entero N dado, calcule la siguiente suma:

● 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.

21
Instrumentos de cuerda

22
a)

b)

input()
c)

23
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.
24
a)

b)
Inmutabilidad de las
cadenas y subsecuencia

c)

25
Métodos de cadena: find() y rfind()

26
find() y rfind()

a) b)

c)
27
a)

replace()

b)
28
count()

29
Ejercicios 2_2
● 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 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.

30
Ejercicios 2_3

● Dada una cadena en la que la letra h aparece al menos dos veces.


Elimine de esa cadena la primera y la última aparición de la letra h, así
como todos los caracteres entre ellas.
● 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.
● Dada una cadena que puede contener o no una carta de interés.
Imprima la ubicación del índice de la primera y última aparición de f. Si
la letra f aparece solo una vez, entonces genera su índice. Si la letra f
no aparece, no imprima nada. No use bucles en esta tarea.
● Dada una cadena que puede o no contener la carta de interés. Imprima
la ubicación del índice de la segunda aparición de la letra f. Si la cadena
contiene la letra f solo una vez, imprima -1, y si la cadena no contiene la
letra f, imprima -2.

31
While loop

32
a)

while
b)

33
else a)

b)

34
else

35
a)

continue

b)

36
a)
break

b)

37
b)
a)

d)
c)
Asignación
múltiple

38
Ejercicios 3_1
● Dado un entero no menor que 2. Imprima su divisor entero más pequeño
mayor que 1.
● Para un entero N dado, encuentre el mayor entero x donde 2x es menor o
igual que N. Imprima el valor del exponente y el resultado de la expresión
2x. No use la operación **.
● 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 la suma de todos los elementos en la secuencia, terminando
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. 39
Ejercicios 3_2
● Determine el número de elementos pares en la secuencia que termina
con el número 0.
● Una secuencia consta de números enteros y termina con el número 0.
Determine cuántos elementos de esta secuencia son mayores que sus
vecinos anteriores.
● Una secuencia consta de números enteros y termina con el número 0.
Determine cuántos elementos de esta secuencia son iguales a su
elemento más grande.
● Dada una secuencia de números enteros que termina con el número 0.
Determine la longitud del fragmento más ancho donde todos los
elementos son iguales entre sí.

40
Listas

41
a)

Listas

b)

42
c)

d)
Listas
e)

43
g)
f)

Listas
h)

44
i)

Dividir y unir números

j)
k)
45
l)

m)

n)
Dividir y unir
números
46
o) p)
r)

q)

s)

t)
Generadores 47
u)

v)

Rebanadas

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
Ejercicios 4_2
● Dada una lista de números únicos, intercambie los elementos mínimos y máximos de esta lista.
Imprime la lista resultante.
● Dada una lista de números, cuente cuántos pares de elementos tienen el mismo valor (son iguales).
Cualquier dos elementos que sean iguales entre sí deben contarse exactamente una vez.
● Dada una lista de números, busque e imprima los elementos que aparecen en la lista solo una vez.
Los elementos deben imprimirse en el orden en que aparecen en la lista original.
● En el ajedrez se sabe que es posible colocar 8 reinas en un tablero de ajedrez de 8 × 8 de modo que
ninguna de ellas pueda atacar a otra. Dada una ubicación de 8 reinas en el tablero, determine si hay
un par de reinas que puedan unirse entre sí en el siguiente movimiento. Imprima la palabra NO si
ninguna reina puede atacar a otra, de lo contrario, imprima SÍ. La entrada consta de ocho pares de
coordenadas, un par por línea, y cada par da la posición de una reina en un tablero de ajedrez
estándar con filas y columnas numeradas a partir de 1.
● En los bolos, el jugador comienza con 10 pines en el extremo más alejado de un carril. El objetivo es
derribar todos los pines. Para este ejercicio, la cantidad de alfileres y bolas variará. Dado el número
de pines N y luego el número de bolas K a rodar, seguido de K pares de números (uno para cada
bola rodada), determine qué pines permanecen en pie después de que se hayan rodado todas las
bolas. Las bolas están numeradas del 1 al N (inclusive) para esta situación. Los pares de números
posteriores, uno para cada K, representan las posiciones de inicio a fin (inclusive) de los pines que
fueron derribados con cada rol. Imprima una secuencia de N caracteres, donde "I" representa un pin
dejado en pie y "." representa un alfiler derribado. 50
Funciones y
recursión

51
Funciones
52
Funciones 53
Variables locales y
globales

54
Variables
locales
55
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'.

56
Ejercicios 4_4
● Dado un número real positivo a y un número entero no negativo n. Calcule un sin
usar bucles, ** operador o la función incorporada math.pow (). En su lugar, use la
recursión y la relación an = a⋅an − 1. Imprime el resultado. Forme la función potencia
(a, n).

● Dada una secuencia de enteros que termina con un 0. Imprima la secuencia en


orden inverso. No use listas u otras estructuras de datos. Use la fuerza de
recursión en su lugar.

● Dado un número entero no negativo n, imprime el enésimo número de Fibonacci.


Haga esto escribiendo una función fib (n) que toma el número entero no negativo n
y devuelve el enésimo número de Fibonacci. No use bucles, use el estilo de
recursión en su lugar. Sin embargo, debe pensar por qué el método recursivo es
mucho más lento que usar bucles.

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_1
● Dados dos enteros que representan las filas y columnas (m × n), y las siguientes m filas de n
elementos, encuentre la posición del índice del elemento máximo e imprima dos números que
representen el índice (i × j) o el número de fila y el número de columna . Si existen múltiples
elementos de este tipo en diferentes filas, imprima el que tenga un número de fila más pequeño.
Si hay varios elementos de este tipo en la misma fila, muestre el número de columna más
pequeño.
● Dado un número impar número entero n, produce una matriz bidimensional de tamaño (n × n).
Rellene cada elemento con una sola cadena de caracteres de "." . Luego llene la fila central, la
columna central y los diagnósticos con la cadena de un solo carácter de "*" (una imagen de un
copo de nieve). Imprima los elementos de la matriz en (n × n) filas y columnas y separe los
caracteres con un solo espacio.
● Dados dos números n y m. Cree una matriz bidimensional de tamaño (n × m) y llénala con los
caracteres "." y "*" en un patrón de tablero de ajedrez. La esquina superior izquierda debe tener
el carácter "." .
● Dado un número entero n, produzca una matriz bidimensional de tamaño (n × n) y complétala
de acuerdo con las siguientes reglas, e imprima con un solo espacio entre caracteres: En la
diagonal principal escriba 0. En las diagonales adyacentes a la principal, escriba 1. En las
siguientes diagonales adyacentes escriba 2 y así sucesivamente. Imprime los elementos de la
matriz resultante. 67
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.

68
Sets

69
Operaciones con
elementos

70
Operaciones con conjuntos

71
Ejercicios 5_3
● Dada una lista de enteros. Determine cuántos números distintos hay. Esta tarea se puede
resolver en una línea de código.
● Dadas dos listas de números. Cuente cuántos números únicos ocurren en ambos. Esta tarea
se puede resolver en una línea de código.
● Dadas dos listas de números. Encuentre todos los números que ocurren tanto en la primera
como en la segunda lista e imprímelos en orden ascendente. Incluso esta tarea se puede
resolver en una línea de código.
● Dada una secuencia de números, determine si ya se ha encontrado el siguiente número. Para
cada número, imprima la palabra SÍ (en una línea separada) si ya se ha encontrado este
número e imprima NO, si aún no se ha encontrado.
● A Alice y Bob les gusta jugar con cubos de colores. Cada niño tiene su propio conjunto de
cubos y cada cubo tiene un color distinto, pero quieren saber cuántos colores únicos existen si
combinan sus conjuntos de bloques. Para determinar esto, los niños enumeraron cada color
distinto con un número aleatorio del 0 al 108. En este punto, su entusiasmo se agotó, y usted
está invitado a ayudarlos a terminar la tarea. Dados dos enteros que indican el número de
bloques en los conjuntos de Alice y luego de Bob, N y M. Las siguientes N líneas contienen el
valor numérico de color para cada cubo en el conjunto de Alice. Luego, las últimas M filas
contienen el valor numérico de color para cada cubo en el conjunto de Bob.
72
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.

73
Diccionarios

74
Ejemplo

75
Aplicando diccionarios

76
Trabajando con elementos
del diccionario

77
Diccionario iterativo

78
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.

79
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.

80
Ejercicios 6_3
● Dado un número n, seguido de n líneas de texto, imprima todas las palabras encontradas en
el texto, una por línea. Las palabras deben clasificarse en orden descendente según su
número de ocurrencias en el texto, y todas las palabras con la misma frecuencia deben
imprimirse en orden lexicográfico. Insinuación. Después de crear un diccionario de las
palabras y sus frecuencias, le gustaría ordenarlo de acuerdo con las frecuencias. Esto se
puede lograr si crea una lista cuyos elementos son tuplas de dos elementos: la frecuencia de
aparición de una palabra y la palabra misma. Por ejemplo, [(2, 'hola'), (1, 'qué'), (3, 'es')].
Luego, la ordenación de lista estándar ordenará una lista de tuplas, con las tuplas
comparadas por el primer elemento, y si son iguales, por el segundo elemento. Esto es casi lo
que se requiere en el problema.

81
Ejercicios 6_4
● Un día, mientras revisaba libros antiguos en el ático, un estudiante Bob encontró el diccionario
inglés-latín. Para entonces, hablaba inglés con fluidez y su sueño era aprender latín. Así que
encontrar el diccionario fue justo a tiempo. Desafortunadamente, el proceso completo de
estudio de idiomas requiere también otro tipo de diccionario: latín-inglés. A falta de una mejor
manera, decidió hacer un segundo diccionario utilizando el primero. Como sabes, el
diccionario consta de palabras, cada una de las cuales contiene múltiples traducciones. Para
cada palabra latina que aparece en cualquier parte del diccionario, Bob tiene que encontrar
todas sus traducciones (es decir, todas las palabras en inglés, para las cuales nuestra palabra
latina se encuentra entre sus traducciones), y tomarlas y solo ellas como las traducciones de
esta palabra latina . Ayúdale a crear un latín-inglés. La primera línea contiene un solo número
entero N: el número de palabras en inglés en el diccionario. Seguido de N entradas de
diccionario. Cada entrada está contenida en una línea separada, que contiene primero la
palabra en inglés, luego un guión rodeado de espacios y luego una lista separada por comas
con las traducciones de esta palabra en inglés en latín. Todas las palabras consisten solo en
letras minúsculas en inglés. Las traducciones están ordenadas en orden lexicográfico. El
orden de las palabras en inglés en el diccionario también es lexicográfico. Imprima el
diccionario latino-inglés correspondiente en el mismo formato. En particular, la primera línea
de la palabra debe ser la traducción lexicográfica mínima de la palabra latina.
82

También podría gustarte