Está en la página 1de 21

prog_datasci_3_python_cast_sol

October 16, 2022

1 Fundamentos de Programación

1.1 PEC 3 - Solución

A continuación podéis encontrar una posible solución a los ejercicios propuestos en la PEC. Tened
en cuenta que puede haber otras maneras de resolver los ejercicios, que también son válidas (y que
también permiten obtener la máxima puntuación del ejercicio).

1.1.1 Ejercicio 1

Considera la siguiente lista de elementos (1.5 puntos):

[1]: list_elem = [1, 5, 10, "python", 33, True]

a) Lee el código que aparece a continuación y explica detalladamente en qué consiste y el resul-
tado obtenido. NM (0.25 puntos)
Nota 1: Puedes consultar este enllace para saber más sobre los f-Strings, unas expresiones muy
utilizadas con la función print().
Nota 2: Puedes consultar este enllace para conocer la función type().
[2]: for n in list_elem:
print(f"Element {n} is a ", type(n))

Element 1 is a <class 'int'>


Element 5 is a <class 'int'>
Element 10 is a <class 'int'>
Element python is a <class 'str'>
Element 33 is a <class 'int'>
Element True is a <class 'bool'>
Respuesta
Tenemos una lista con 6 elementos. Con el for recorremos cada uno de los elementos de la lista y,
para cada uno, utilizamos la función type() para saber su tipo. Así, los números 1, 5, 10 y 33 son
de tipo int, “hello” es un string y True, un boolean.
b) Mientras estábamos trabajando, hemos perdido una parte del código. Tenemos el resultado
que obteníamos, pero el código está incompleto y no funciona. A partir de la información que

1
tenemos, reescribe las líneas de código que faltan para obtener el mismo resultado. NM (0.5
puntos)

[ ]: #b1)

for n in list_elem:
# Añade código

print(f"Element {n} is a string")


else:
print(f"Element {n} is NOT a string")

[ ]: # Resultado esperado

#Element 1 is NOT a string


#Element 5 is NOT a string
#Element 10 is NOT a string
#Element hello is a string
#Element 33 is NOT a string
#Element True is NOT a string

[ ]: #b2)

for n in list_elem:
# Añade código

print(f"Element {n} is a string")


# Añade código

print(f"Element {n} is a Boolean")


else:
print(f"Element {n} is an integer")

[ ]: # Resultado esperado

#Element 1 is an integer
#Element 5 is an integer
#Element 10 is an integer
#Element hello is a string
#Element 33 is an integer
#Element True is a Boolean

[3]: ## Respuesta

#b1)

# Recorremos los elementos de la lista

2
for n in list_elem:
# Miramos si el tipo del elemento es string
if type(n) == str:
# Mostramos el mensaje por pantalla
print(f"Element {n} is a string")
else:
# Mostramos el mensaje por pantalla
print(f"Element {n} is NOT a string")

Element 1 is NOT a string


Element 5 is NOT a string
Element 10 is NOT a string
Element python is a string
Element 33 is NOT a string
Element True is NOT a string

[4]: ## Respuesta

#b2)

# Recorremos los elementos de la lista


for n in list_elem:
# Miramos si el tipo del elemento es string
if type(n) == str:
# Mostramos el mensaje por pantalla
print(f"Element {n} is a string")
# Miramos si el tipo del elemento es boolean
elif type(n) == bool:
# Mostramos el mensaje por pantalla
print(f"Element {n} is a Boolean")
# Si no se cumplen las anteriores condiciones
else:
# Mostramos el mensaje por pantalla
print(f"Element {n} is an integer")

Element 1 is an integer
Element 5 is an integer
Element 10 is an integer
Element python is a string
Element 33 is an integer
Element True is a Boolean
c) Escribe un código que, mediante if, muestre por pantalla sólo los números 10 y 33 de la lista
list_elem. NM (0.25 puntos)

[5]: ## Respuesta

# Recorremos los elementos de la lista

3
for n in list_elem:
# Miramos si el tipo del elemento es int
if type(n) == int:
# Si el elemento es mayor o igual a 10
if n >= 10:
# Mostramos el elemento por pantalla
print(n)

10
33
d) Qué diferencia existe entre el código d1) y el d2)? Ejecútalos y explica en detalle los resultados.
NM (0.5 puntos)

[6]: #d1)

# Recorremos los elementos de la lista


for n in list_elem:
if n == 10:
break
# Mostramos el elemento por pantalla
print(n)

1
5

[7]: #d2)

# Recorremos los elementos de la lista


for n in list_elem:
if n == 10:
continue
# Mostramos el elemento por pantalla
print(n)

1
5
python
33
True
Respuesta
La estructura de ambos códigos es muy similar. Se recorre la lista list_elem y se van mostrando
por pantalla los elementos. Cuando se encuentra el elemento 10, se produce una acción, que es
distinta en cada caso. En el d1) existe un break, al encontrarse con el elemento 10, se detiene la
ejecución del loop. Por eso sólo se muestran por pantalla los 2 primeros elementos. En cambio, en
el d2) existe un continue, es decir, al encontrarse con el elemento 10, se lo salta y continúa con el
siguiente. De esta forma, el elemento 10 es el único que no se muestra por pantalla.

4
1.1.2 Ejercicio 2

a) Queremos hacer un programa que vaya sumando el dinero que gastamos y que, cuando llegue-
mos a un límite que definimos nosotros, nos avise y detenga el programa. El código debe tener
las siguientes características:
• Empezaremos con un dinero inicial 0 y tendremos un límite de 50. NM (0.25 puntos)
• En cada iteración, incrementaremos el dinero que hemos gastado por un valor random entre
0 y 10 mediante la función randint. EG (0.5 puntos)
• En cada iteración, se tiene que mostrar por pantalla cuánto dinero hemos gastado y cuánto
nos quedan. Es decir, la diferencia entre el límite y el dinero total gastado en cada iteración.
NM (0.25 puntos)
• Una vez lleguemos o superemos el límite, se deberá avisar por pantalla y mostrar también
cuánto dinero hemos gastado finalmente y cuánto nos hemos pasado del límite. NM (0.5
puntos)
(1.5 puntos)

[8]: ## Respuesta

# Cargamos la librería random


from random import randint

# Definimos el valor inicial de las variables


bills = 0
max_budget = 50

# Establecemos la condición del while


while bills < max_budget:
# Generamos un número random entre 0 y 10
new_bill = randint(0, 10)
# Sumamos el valor random a la variable bills
bills += new_bill
# Calculamos cuánto nos queda por gastar
to_spend = max_budget - bills
# Si todavía tenemos dinero
if to_spend > 0:
# Mostramos el mensaje por pantalla
print(f"De momento hemos gastado {bills}, y todavía tenemos {to_spend}")
else:
# Mostramos el mensaje por pantalla
print(f"[WARNING] No podemos gastar más!")
print(f"Hemos gastado {bills}, y nos hemos pasado {to_spend} del␣
↪límite")

break

De momento hemos gastado 1, y todavía tenemos 49


De momento hemos gastado 3, y todavía tenemos 47

5
De momento hemos gastado 12, y todavía tenemos 38
De momento hemos gastado 19, y todavía tenemos 31
De momento hemos gastado 25, y todavía tenemos 25
De momento hemos gastado 33, y todavía tenemos 17
De momento hemos gastado 33, y todavía tenemos 17
De momento hemos gastado 37, y todavía tenemos 13
De momento hemos gastado 45, y todavía tenemos 5
[WARNING] No podemos gastar más!
Hemos gastado 51, y nos hemos pasado -1 del límite
b) El código anterior es muy interesante y queremos utilizarlo para apuntar lo que gastamos
cuando vamos a comprar. Por este motivo, es conveniente ponerlo en forma de función, ya
que nos permitirá interaccionar con él más fácilmente. Para ello, tendremos que tener en
cuenta los siguientes puntos:
• La función deberá tener como parámetro de entrada el límite máximo que podemos gastar.
NM (0.25 puntos)
• El usuario deberá introducir cada uno de los gastos mediante la función input, ya no será un
valor aleatorio. NM (0.5 puntos)
• Tal y como se ha comentado en el apartado anterior, se deberá mostrar por pantalla cuánto
dinero hemos gastado, lo que nos queda, y, si llegamos al límite, se deberá avisar al usuario.
NM (0.75 puntos)
(1.5 puntos)

[9]: ## Respuesta

# Cargamos la librería random


from random import randint

def calculator_bills(max_budget):
# Definimos el valor inicial de la variable
bills = 0
# Establecemos la condición del while
while bills < max_budget:
# Pedimos al usuario que introduzca el gasto
new_bill = int(input("Introducir nuevo gasto: "))
# Añadimos el nuevo gasto al gasto global
bills += new_bill
# Calculamos cuánto nos queda por gastar
to_spend = max_budget - bills
# Si todavía tenemos dinero
if to_spend > 0:
# Mostramos el mensaje por pantalla
print(f"De momento hemos gastado {bills}, y todavía tenemos␣
↪{to_spend}")

else:
# Mostramos el mensaje por pantalla
print(f"[WARNING] No podemos gastar más!")

6
print(f"Hemos gastado {bills}, y nos hemos pasado {to_spend} del␣
↪límite")
break

[10]: calculator_bills(50)

Introducir nuevo gasto: 15


De momento hemos gastado 15, y todavía tenemos 35
Introducir nuevo gasto: 20
De momento hemos gastado 35, y todavía tenemos 15
Introducir nuevo gasto: 17
[WARNING] No podemos gastar más!
Hemos gastado 52, y nos hemos pasado -2 del límite
c) La calculadora de gastos funciona bien, pero nos hemos dado cuenta de que si el usuario
introduce por error algo que no sea un número, todo el programa falla. Para evitar esta
situación, utiliza tu conocimiento sobre gestión de errores y excepciones para obtener el
siguiente resultado:
• Cuando el usuario introduzca un valor erróneo, el programa le avisará, en lugar de fallar
directamente. NM (0.5 puntos)
• Una vez que el usuario ha sido avisado, el programa permite introducir el valor de nuevo una
vez más. Si vuelve a introducir un valor erróneo, el programa se cierra. NM (0.5 puntos)
(1 punto)

[11]: ## Respuesta

# Cargamos la librería random


from random import randint

def calculator_bills(max_budget):
# Definimos el valor inicial de la variable
bills = 0
# Establecemos la condición del while
while bills < max_budget:
try:
# Pedimos al usuario que introduzca el gasto
new_bill = int(input("Introducir nuevo gasto: "))
except ValueError:
# Mostramos el mensaje por pantalla
print("[WARNING] Valor erróneo, sólo puede ser un número.")
try:
# Pedimos al usuario que introduzca de nuevo el gasto
new_bill = int(input("Vuelva a introducir el gasto: "))
except ValueError:
# Mostramos el mensaje por pantalla
print("[ERROR] Se ha vuelto a introducir un valor erróneo.\n␣
↪Procedemos a cerrar el programa")

7
break

# Añadimos el nuevo gasto al gasto global


bills += new_bill
# Calculamos cuánto nos queda por gastar
to_spend = max_budget - bills
# Si todavía tenemos dinero
if to_spend > 0:
# Mostramos el mensaje por pantalla
print(f"De momento hemos gastado {bills}, y todavía tenemos␣
↪{to_spend}")

else:
# Mostramos el mensaje por pantalla
print(f"[WARNING] No podemos gastar más!")
print(f"Hemos gastado {bills}, y nos hemos pasado {to_spend} del␣
↪límite")

break

[12]: calculator_bills(50)

Introducir nuevo gasto: as


[WARNING] Valor erróneo, sólo puede ser un número.
Vuelva a introducir el gasto: 25
De momento hemos gastado 25, y todavía tenemos 25
Introducir nuevo gasto: 30
[WARNING] No podemos gastar más!
Hemos gastado 55, y nos hemos pasado -5 del límite

1.1.3 Ejercicio 3

a) Tal y como hemos visto en la teoría, las list comprehensions son muy útiles para crear listas
en una sola línea de código. A continuación, te proponemos que transformes los códigos
siguientes a list comprehensions: NM
(1.5 puntos)

[13]: #a1)

result = []

for i in range(5):
result.append(i**3)

print(result)

[0, 1, 8, 27, 64]

8
[14]: ## Respuesta

result = [i**3 for i in range(5)]

# Mostramos el resultado por pantalla


print(result)

[0, 1, 8, 27, 64]

[15]: #a2)

list_elem2 = [10, 45, 57, 4, 2, 13, 98, 7]


new_list = []

for x in list_elem2:

if x >= 45:
new_list.append(x+1)
else:
new_list.append(x+5)

print(new_list)

[15, 46, 58, 9, 7, 18, 99, 12]

[16]: ## Respuesta

#a2)

# Creamos la lista
list_elem2 = [10, 45, 57, 4, 2, 13, 98, 7]

new_list = [x+1 if x >= 45 else x+5 for x in list_elem2]

# Mostramos el resultado por pantalla


print(new_list)

[15, 46, 58, 9, 7, 18, 99, 12]

[17]: #a3)

names = ['Alex','Peter','Anna','John','Felix','Pedro']
new_names = []

for name in names:


if name.lower().startswith('a'):
new_names.append(name)

9
print(new_names)

['Alex', 'Anna']

[18]: ## Respuesta

#a3)

# Creamos la lista
names = ['Alex','Peter','Anna','John','Felix','Pedro']
new_names = [name for name in names if name.lower().startswith('a')]

# Mostramos los elementos por pantalla


print(new_names)

['Alex', 'Anna']
b) Hemos creado la siguiente list comprehension y nos hemos fijado en que como resultado
tenemos una lista de None. Piensa y explica por qué obtenemos este resultado.(Opcional)

[19]: #b)

# Creamos las listas


days = ['Lunes','Martes','Miércoles','Jueves','Viernes','Sábado','Domingo']
weekend = ['Sábado','Domingo']

# Mostramos el resultado por pantalla


[print(f"Viva, ya es {d}") if d in weekend else print(f"Ànimos, aún es {d}")␣
↪for d in days]

Ànimos, aún es Lunes


Ànimos, aún es Martes
Ànimos, aún es Miércoles
Ànimos, aún es Jueves
Ànimos, aún es Viernes
Viva, ya es Sábado
Viva, ya es Domingo

[19]: [None, None, None, None, None, None, None]

Respuesta
Una list comprehension siempre devuelve una lista, y, dado que print() se evalúa como None, la
lista se llena con los valores de None. En este caso, quizá sea mejor utilizar un bucle for, ya que
simplemente queremos mostrar por pantalla el resultado, no queremos almacenar ningún elemento
dentro de una nueva lista.

10
1.1.4 Ejercicio 4

Mientras que las list comprehensions se utilizan para crear listas, la lambda es una función que
se puede procesar como otras funciones y, por tanto, devolver valores o listas. En este ejercicio
pondremos en práctica distintas funcionalidades de este tipo de funciones.
En los siguientes apartados, completa el código escribiendo la función lambda que realice la función
indicada. Los guiones — indican dónde deberías poner la función lambda.
a) Dada la siguiente lista (list_str), escribe una función lambda que devuelva los elementos de
la lista que comienzan por “h”. Muestra los elementos por pantalla.NM (0.25 puntos)
list_str = [“hello”,“hola”,“salut”,“ciao”, “hallo”, “hi”]
list(filter(lambda x: —, list_str))
b) Dada la lista del apartado b), escribe una función lambda que se quede con el elemento de la
lista de menor longitud (es decir, el string más corto). Muestra el elemento por pantalla.NM
(0.25 puntos)
min_list = min(list_str, key = lambda x: —)
c) Escribe una expresión que, dada una lista de números, te cree otra lista con los elementos
elevados a la potencia de 5. Puedes utilizar la función pow() para especificar el orden de la
potencia (por ejemplo, pow(x, 2) eleva x al cuadrado).
En este ejercicio no os damos el código para completar, sino que deberas escribir toda la expresión
(no sólo la función lambda). Puede ser útil explorar la funcionalidad de map(). EG (0.5 puntos)
(1 punto)

[20]: ## Respuesta

#a)

# Creamos la lista
list_str = ["hello","hola","salut","ciao", "hallo", "hi"]

# Filtramos aquellos elementos que cumplen con la condición


list(filter(lambda x: x.startswith('h'), list_str))

[20]: ['hello', 'hola', 'hallo', 'hi']

[21]: ## Respuesta

#b)

# Nos quedamos con el elemento más pequeño de len(x)


min_list = min(list_str, key = lambda x: len(x))

# Mostramos el elemento de longitud menor


min_list

11
[21]: 'hi'

[22]: ## Respuesta

#c)

# Creamos la lista
list_int = [2,4,6,8,10,12,14,16,18]

# Aplicamos la función pow(x,5) a los elementos de la lista


pow5 = map(lambda x: pow(x,5), list_int)

# Mostramos el resultado por pantalla


list(pow5)

[22]: [32, 1024, 7776, 32768, 100000, 248832, 537824, 1048576, 1889568]

1.1.5 Ejercicio 5

a) Utiliza la función range para mostrar por pantalla los números pares entre 2 y 10 (ambos
incluidos): NM (0.25 puntos)

[23]: ## Respuesta

# Recorremos los números de 2 a 10


for i in range(2, 11, 2):
# Mostramos los elementos por pantalla
print(i)

2
4
6
8
10
b) Crea una función que, dada una lista, cree una nueva lista con sólo los elementos que estaban
en posición par. Utiliza ennumerate para identificar los índices pares. NM (0.25 puntos)
Nota: Considera que el primer elemento de la lista (en este caso, cat), tiene el índice 1.

[24]: # Creamos la lista


list_animals = ['gato','perro','lobo','pez','hamster','leon','tigre','koala']

[25]: ## Respuesta

def even_items(iter_list):
# Creamos la lista values
values = []

12
# Recorremos los elementos de la lista
for index, value in enumerate(iter_list, start=1):
# Si es divisible por 2
if not index % 2:
# Se añade el elemento a la lista
values.append(value)
return values

[26]: # Aplicamos la función even_items en la lista


even_items(list_animals)

[26]: ['perro', 'pez', 'leon', 'koala']

c) Crea un código que utilice las 3 listas para construir una frase con la siguiente estructura:
El "animal" que pesa "weight" se puede tener en casa? "domestico"
Recorre todos los elementos de las listas, de modo que resulte en 8 frases diferentes. La 1a frase
sería:
El gato que pesa 5kg se puede tener en casa? True
Encuentra dos formas diferentes para obtener el mismo resultado. Una de ellas tiene que utilizar
zip(). Cuál te parece más adecuada? Razona la respuesta. NM (0.5 puntos)

[27]: # Creamos tres listas


list_animals = ['gato','perro','lobo','pez','hamster','leon','tigre','koala']
list_weight = [5, 12, 30, 0.5, 1, 50, 60, 15]
list_domestic = [True, True, False, True, True, False, False, False]

[28]: ## Respuesta

# Opción 1

# Recorremos los elementos de la lista


for i in range(0, len(list_animals)):
# Mostramos el mensaje por pantalla
print("El {} que pesa {}kg se puede tener en casa? {}".format(
(list_animals[i]), (list_weight[i]), (list_domestic[i])))

El gato que pesa 5kg se puede tener en casa? True


El perro que pesa 12kg se puede tener en casa? True
El lobo que pesa 30kg se puede tener en casa? False
El pez que pesa 0.5kg se puede tener en casa? True
El hamster que pesa 1kg se puede tener en casa? True
El leon que pesa 50kg se puede tener en casa? False
El tigre que pesa 60kg se puede tener en casa? False
El koala que pesa 15kg se puede tener en casa? False

13
[29]: ## Respuesta

# Opción 2

# Recorremos los elementos de la lista


for anim, eig, dom in zip(list_animals, list_weight, list_domestic):
# Mostramos el mensaje por pantalla
print("El {} que pesa {} es pot tenir a casa? {}".format(
(anim), (eig), (dom)))

El gato que pesa 5 es pot tenir a casa? True


El perro que pesa 12 es pot tenir a casa? True
El lobo que pesa 30 es pot tenir a casa? False
El pez que pesa 0.5 es pot tenir a casa? True
El hamster que pesa 1 es pot tenir a casa? True
El leon que pesa 50 es pot tenir a casa? False
El tigre que pesa 60 es pot tenir a casa? False
El koala que pesa 15 es pot tenir a casa? False
Respuesta
Ambas opciones son buenas y funcionan correctamente. Elegir una u otra depende del problema
que estemos tratando. En este caso, podríamos inclinarnos por la segunda opción, con la función
zip, ya que es más directa, no necesitamos el range para indicar el índice.

1.1.6 Ejercicio 6

Hemos encontrado un dataset con información de la población mundial. La primera fila contiene
la cabecera, que define cada una de las columnas (Rank, Country, Capital, Continent, 2022_Pop-
ulation y Area). (1 punto)
a) Abre el archivo y muéstralo por pantalla. NM (0.25 puntos)
b) A continuación, responde a las siguientes preguntas:NM (0.25 puntos)
• Cuántas ciudades europeas hay?
• Cuál es el porcentaje de ciudades europeas respecto al total? Muestra el resultado con 3
decimales.
c) Por último, nos interesa tener la información de los países que comienzan por la letra Z. Crea
un archivo nuevo sólo con las líneas de los países que empiezan por Z. NM (0.5 puntos)
d) En teoría hemos visto también la librería pandas, que nos permite trabajar con archivos de
manera muy sencilla. Utilízala para abrir el archivo de texto y muestra las 10 primeras líneas
por pantalla. (Opcional)

[30]: ## Respuesta

#a)

14
# Abrimos el archivo de lectura
with open("./data/world_population.txt") as f:
# Recorremos línea por línea
for line in f:
print(line, end="")

Rank Country Capital Continent 2022_Population Area


36 Afghanistan Kabul Asia 41128771 652230
138 Albania Tirana Europe 2842321 28748
34 Algeria Algiers Africa 44903225 2381741
213 American Samoa Pago Pago Oceania 44273 199
203 Andorra Andorra la Vella Europe 79824 468
42 Angola Luanda Africa 35588987 1246700
224 Anguilla The Valley North America 15857 91
201 Antigua and Barbuda Saint John’s North America 93763 442
33 Argentina Buenos Aires South America 45510318 2780400
140 Armenia Yerevan Asia 2780469 29743
198 Aruba Oranjestad North America 106445 180
55 Australia Canberra Oceania 26177413 7692024
99 Austria Vienna Europe 8939617 83871
91 Azerbaijan Baku Asia 10358074 86600
176 Bahamas Nassau North America 409984 13943
154 Bahrain Manama Asia 1472233 765
8 Bangladesh Dhaka Asia 171186372 147570
186 Barbados Bridgetown North America 281635 430
96 Belarus Minsk Europe 9534954 207600
81 Belgium Brussels Europe 11655930 30528
177 Belize Belmopan North America 405272 22966
77 Benin Porto-Novo Africa 13352864 112622
206 Bermuda Hamilton North America 64184 54
165 Bhutan Thimphu Asia 782455 38394
80 Bolivia Sucre South America 12224110 1098581
137 Bosnia and Herzegovina Sarajevo Europe 3233526 51209
144 Botswana Gaborone Africa 2630296 582000
7 Brazil Brasilia South America 215313498 8515767
221 British Virgin Islands Road Town North America 31305 151
175 Brunei Bandar Seri Begawan Asia 449002 5765
108 Bulgaria Sofia Europe 6781953 110879
58 Burkina Faso Ouagadougou Africa 22673762 272967
78 Burundi Bujumbura Africa 12889576 27834
73 Cambodia Phnom Penh Asia 16767842 181035
53 Cameroon Yaounde Africa 27914536 475442
39 Canada Ottawa North America 38454327 9984670
171 Cape Verde Praia Africa 593149 4033
205 Cayman Islands George Town North America 68706 264
117 Central African Republic Bangui Africa 5579144 622984
69 Chad N'Djamena Africa 17723315 1284000

15
65 Chile Santiago South America 19603733 756102
1 China Beijing Asia 1425887337 9706961
28 Colombia Bogota South America 51874024 1141748
163 Comoros Moroni Africa 836774 1862
223 Cook Islands Avarua Oceania 17011 236
124 Costa Rica San José North America 5180829 51100
130 Croatia Zagreb Europe 4030358 56594
85 Cuba Havana North America 11212191 109884
189 Curacao Willemstad North America 191163 444
158 Cyprus Nicosia Europe 1251488 9251
88 Czech Republic Prague Europe 10493986 78865
115 Denmark Copenhagen Europe 5882261 43094
160 Djibouti Djibouti Africa 1120849 23200
204 Dominica Roseau North America 72737 751
84 Dominican Republic Santo Domingo North America 11228821
48671
15 DR Congo Kinshasa Africa 99010212 2344858
67 Ecuador Quito South America 18001000 276841
14 Egypt Cairo Africa 110990103 1002450
112 El Salvador San Salvador North America 6336392 21041
152 Equatorial Guinea Malabo Africa 1674908 28051
132 Eritrea Asmara Africa 3684032 117600
156 Estonia Tallinn Europe 1326062 45227
159 Eswatini Mbabane Africa 1201670 17364
12 Ethiopia Addis Ababa Africa 123379924 1104300
231 Falkland Islands Stanley South America 3780 12173
209 Faroe Islands Tórshavn Europe 53090 1393
162 Fiji Suva Oceania 929766 18272
118 Finland Helsinki Europe 5540745 338424
23 France Paris Europe 64626628 551695
184 French Guiana Cayenne South America 304557 83534
183 French Polynesia Papeete Oceania 306279 4167
146 Gabon Libreville Africa 2388992 267668
142 Gambia Banjul Africa 2705992 10689
131 Georgia Tbilisi Asia 3744385 69700
19 Germany Berlin Europe 83369843 357114
47 Ghana Accra Africa 33475870 238533
219 Gibraltar Gibraltar Europe 32649 6
90 Greece Athens Europe 10384971 131990
208 Greenland Nuuk North America 56466 2166086
193 Grenada Saint George's North America 125438 344
178 Guadeloupe Basse-Terre North America 395752 1628
191 Guam Hagåtña Oceania 171774 549
68 Guatemala Guatemala City North America 17843908 108889
207 Guernsey Saint Peter Port Europe 63301 78
75 Guinea Conakry Africa 13859341 245857
149 Guinea-Bissau Bissau Africa 2105566 36125
164 Guyana Georgetown South America 808726 214969

16
82 Haiti Port-au-Prince North America 11584996 27750
89 Honduras Tegucigalpa North America 10432860 112492
104 Hong Kong Hong Kong Asia 7488865 1104
94 Hungary Budapest Europe 9967308 93028
179 Iceland Reykjavík Europe 372899 103000
2 India New Delhi Asia 1417173173 3287590
4 Indonesia Jakarta Asia 275501339 1904569
17 Iran Tehran Asia 88550570 1648195
35 Iraq Baghdad Asia 44496122 438317
125 Ireland Dublin Europe 5023109 70273
202 Isle of Man Douglas Europe 84519 572
98 Israel Jerusalem Asia 9038309 20770
25 Italy Rome Europe 59037474 301336
52 Ivory Coast Yamoussoukro Africa 28160542 322463
139 Jamaica Kingston North America 2827377 10991
11 Japan Tokyo Asia 123951692 377930
195 Jersey Saint Helier Europe 110778 116
83 Jordan Amman Asia 11285869 89342
66 Kazakhstan Nursultan Asia 19397998 2724900
27 Kenya Nairobi Africa 54027487 580367
192 Kiribati Tarawa Oceania 131232 811
129 Kuwait Kuwait City Asia 4268873 17818
110 Kyrgyzstan Bishkek Asia 6630623 199951
103 Laos Vientiane Asia 7529475 236800
151 Latvia Riga Europe 1850651 64559
119 Lebanon Beirut Asia 5489739 10452
147 Lesotho Maseru Africa 2305825 30355
121 Liberia Monrovia Africa 5302681 111369
107 Libya Tripoli Africa 6812341 1759540
216 Liechtenstein Vaduz Europe 39327 160
141 Lithuania Vilnius Europe 2750055 65300
168 Luxembourg Luxembourg Europe 647599 2586
167 Macau Concelho de Macau Asia 695168 30
50 Madagascar Antananarivo Africa 29611714 587041
62 Malawi Lilongwe Africa 20405317 118484
45 Malaysia Kuala Lumpur Asia 33938221 330803
174 Maldives Malé Asia 523787 300
59 Mali Bamako Africa 22593590 1240192
173 Malta Valletta Europe 533286 316
215 Marshall Islands Majuro Oceania 41569 181
180 Martinique Fort-de-France North America 367507 1128
126 Mauritania Nouakchott Africa 4736139 1030700
157 Mauritius Port Louis Africa 1299469 2040
182 Mayotte Mamoudzou Africa 326101 374
10 Mexico Mexico City North America 127504125 1964375
194 Micronesia Palikir Oceania 114164 702
135 Moldova Chisinau Europe 3272996 33846
217 Monaco Monaco Europe 36469 2

17
134 Mongolia Ulaanbaatar Asia 3398366 1564110
169 Montenegro Podgorica Europe 627082 13812
230 Montserrat Brades North America 4390 102
40 Morocco Rabat Africa 37457971 446550
48 Mozambique Maputo Africa 32969517 801590
26 Myanmar Nay Pyi Taw Asia 54179306 676578
145 Namibia Windhoek Africa 2567012 825615
225 Nauru Yaren Oceania 12668 21
49 Nepal Kathmandu Asia 30547580 147181
71 Netherlands Amsterdam Europe 17564014 41850
185 New Caledonia Nouméa Oceania 289950 18575
123 New Zealand Wellington Oceania 5185288 270467
106 Nicaragua Managua North America 6948392 130373
54 Niger Niamey Africa 26207977 1267000
6 Nigeria Abuja Africa 218541212 923768
232 Niue Alofi Oceania 1934 260
56 North Korea Pyongyang Asia 26069416 120538
150 North Macedonia Skopje Europe 2093599 25713
210 Northern Mariana Islands Saipan Oceania 49551 464
120 Norway Oslo Europe 5434319 323802
127 Oman Muscat Asia 4576298 309500
5 Pakistan Islamabad Asia 235824862 881912
222 Palau Ngerulmud Oceania 18055 459
122 Palestine Ramallah Asia 5250072 6220
128 Panama Panama City North America 4408581 75417
93 Papua New Guinea Port Moresby Oceania 10142619 462840
109 Paraguay Asunción South America 6780744 406752
44 Peru Lima South America 34049588 1285216
13 Philippines Manila Asia 115559009 342353
37 Poland Warsaw Europe 39857145 312679
92 Portugal Lisbon Europe 10270865 92090
136 Puerto Rico San Juan North America 3252407 8870
143 Qatar Doha Asia 2695122 11586
114 Republic of the Congo Brazzaville Africa 5970424 342000
161 Reunion Saint-Denis Africa 974052 2511
64 Romania Bucharest Europe 19659267 238391
9 Russia Moscow Europe 144713314 17098242
76 Rwanda Kigali Africa 13776698 26338
228 Saint Barthelemy Gustavia North America 10967 21
211 Saint Kitts and Nevis Basseterre North America 47657 261
190 Saint Lucia Castries North America 179857 616
220 Saint Martin Marigot North America 31791 53
229 Saint Pierre and Miquelon Saint-Pierre North America 5862
242
199 Saint Vincent and the Grenadines Kingstown North America
103948 389
188 Samoa Apia Oceania 222382 2842
218 San Marino San Marino Europe 33660 61

18
187 Sao Tome and Principe São Tomé Africa 227380 964
41 Saudi Arabia Riyadh Asia 36408820 2149690
72 Senegal Dakar Africa 17316449 196722
105 Serbia Belgrade Europe 7221365 88361
196 Seychelles Victoria Africa 107118 452
102 Sierra Leone Freetown Africa 8605718 71740
113 Singapore Singapore Asia 5975689 710
214 Sint Maarten Philipsburg North America 44175 34
116 Slovakia Bratislava Europe 5643453 49037
148 Slovenia Ljubljana Europe 2119844 20273
166 Solomon Islands Honiara Oceania 724273 28896
70 Somalia Mogadishu Africa 17597511 637657
24 South Africa Pretoria Africa 59893885 1221037
29 South Korea Seoul Asia 51815810 100210
86 South Sudan Juba Africa 10913164 619745
30 Spain Madrid Europe 47558630 505992
61 Sri Lanka Colombo Asia 21832143 65610
32 Sudan Khartoum Africa 46874204 1886068
170 Suriname Paramaribo South America 618040 163820
87 Sweden Stockholm Europe 10549347 450295
101 Switzerland Bern Europe 8740472 41284
60 Syria Damascus Asia 22125249 185180
57 Taiwan Taipei Asia 23893394 36193
95 Tajikistan Dushanbe Asia 9952787 143100
22 Tanzania Dodoma Africa 65497748 945087
20 Thailand Bangkok Asia 71697030 513120
155 Timor-Leste Dili Asia 1341296 14874
100 Togo Lomé Africa 8848699 56785
233 Tokelau Nukunonu Oceania 1871 12
197 Tonga Nuku‘alofa Oceania 106858 747
153 Trinidad and Tobago Port-of-Spain North America 1531044 5130
79 Tunisia Tunis Africa 12356117 163610
18 Turkey Ankara Asia 85341241 783562
111 Turkmenistan Ashgabat Asia 6430770 488100
212 Turks and Caicos Islands Cockburn Town North America 45703
948
227 Tuvalu Funafuti Oceania 11312 26
31 Uganda Kampala Africa 47249585 241550
38 Ukraine Kiev Europe 39701739 603500
97 United Arab Emirates Abu Dhabi Asia 9441129 83600
21 United Kingdom London Europe 67508936 242900
3 United States "Washington, D.C." North America 338289857
9372610
200 United States Virgin Islands Charlotte Amalie North America
99465 347
133 Uruguay Montevideo South America 3422794 181034
43 Uzbekistan Tashkent Asia 34627652 447400
181 Vanuatu Port-Vila Oceania 326740 12189

19
234 Vatican City Vatican City Europe 510 1
51 Venezuela Caracas South America 28301696 916445
16 Vietnam Hanoi Asia 98186856 331212
226 Wallis and Futuna Mata-Utu Oceania 11572 142
172 Western Sahara El Aaiún Africa 575986 266000
46 Yemen Sanaa Asia 33696614 527968
63 Zambia Lusaka Africa 20017675 752612
74 Zimbabwe Harare Africa 16320537 390757

[31]: ## Respuesta

#b)

# Inicializamos el contador a -1 por la cabecera


total = -1
eu = 0

# Abrimos el archivo de lectura


with open("./data/world_population.txt") as f:
# Recorremos línea por línea
for line in f:
# Si el continente es "Europe"
if line.split("\t")[3] == 'Europe':
# Sumamos 1 al contador
eu += 1
total += 1

[32]: print("El número total de países europeos es: ", eu)


print("El porcentaje de países europeos respecto al total es: ", round((eu/
↪total)*100,3))

El número total de países europeos es: 50


El porcentaje de países europeos respecto al total es: 21.368

[33]: ## Respuesta

#c)

# Creamos el archivo de salida ("output")


out = open('Z_file.txt', 'w')
# Abrimos el archivo de lectura
with open("./data/world_population.txt") as f:
# Recorremos línea por línea
for line in f:
# Si el nombre empieza por "Z"
if line.split("\t")[1].startswith('Z'):
# Mostramos la línea por pantalla

20
print(line)
# Guardamos la fila en el archivo
out.write(line)

63 Zambia Lusaka Africa 20017675 752612

74 Zimbabwe Harare Africa 16320537 390757

[34]: ## Respuesta

#d)

# Cargamos la librería pandas


import pandas as pd

# Abrimos el archivo con el separador correcto "\t"


df = pd.read_csv("./data/world_population.txt", delimiter = "\t")

# Mostramos los 10 primeros registros


df.head(10)

[34]: Rank Country Capital Continent \


0 36 Afghanistan Kabul Asia
1 138 Albania Tirana Europe
2 34 Algeria Algiers Africa
3 213 American Samoa Pago Pago Oceania
4 203 Andorra Andorra la Vella Europe
5 42 Angola Luanda Africa
6 224 Anguilla The Valley North America
7 201 Antigua and Barbuda Saint John’s North America
8 33 Argentina Buenos Aires South America
9 140 Armenia Yerevan Asia

2022_Population Area
0 41128771 652230
1 2842321 28748
2 44903225 2381741
3 44273 199
4 79824 468
5 35588987 1246700
6 15857 91
7 93763 442
8 45510318 2780400
9 2780469 29743

21

También podría gustarte