Add exercises 11
Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
This commit is contained in:
parent
741f07dd9d
commit
acfcd590da
@ -1,195 +0,0 @@
|
||||
countries = [
|
||||
'Afghanistan',
|
||||
'Albania',
|
||||
'Algeria',
|
||||
'Andorra',
|
||||
'Angola',
|
||||
'Antigua and Barbuda',
|
||||
'Argentina',
|
||||
'Armenia',
|
||||
'Australia',
|
||||
'Austria',
|
||||
'Azerbaijan',
|
||||
'Bahamas',
|
||||
'Bahrain',
|
||||
'Bangladesh',
|
||||
'Barbados',
|
||||
'Belarus',
|
||||
'Belgium',
|
||||
'Belize',
|
||||
'Benin',
|
||||
'Bhutan',
|
||||
'Bolivia',
|
||||
'Bosnia and Herzegovina',
|
||||
'Botswana',
|
||||
'Brazil',
|
||||
'Brunei',
|
||||
'Bulgaria',
|
||||
'Burkina Faso',
|
||||
'Burundi',
|
||||
'Cambodia',
|
||||
'Cameroon',
|
||||
'Canada',
|
||||
'Cape Verde',
|
||||
'Central African Republic',
|
||||
'Chad',
|
||||
'Chile',
|
||||
'China',
|
||||
'Colombi',
|
||||
'Comoros',
|
||||
'Congo (Brazzaville)',
|
||||
'Congo',
|
||||
'Costa Rica',
|
||||
"Cote d'Ivoire",
|
||||
'Croatia',
|
||||
'Cuba',
|
||||
'Cyprus',
|
||||
'Czech Republic',
|
||||
'Denmark',
|
||||
'Djibouti',
|
||||
'Dominica',
|
||||
'Dominican Republic',
|
||||
'East Timor (Timor Timur)',
|
||||
'Ecuador',
|
||||
'Egypt',
|
||||
'El Salvador',
|
||||
'Equatorial Guinea',
|
||||
'Eritrea',
|
||||
'Estonia',
|
||||
'Ethiopia',
|
||||
'Fiji',
|
||||
'Finland',
|
||||
'France',
|
||||
'Gabon',
|
||||
'Gambia, The',
|
||||
'Georgia',
|
||||
'Germany',
|
||||
'Ghana',
|
||||
'Greece',
|
||||
'Grenada',
|
||||
'Guatemala',
|
||||
'Guinea',
|
||||
'Guinea-Bissau',
|
||||
'Guyana',
|
||||
'Haiti',
|
||||
'Honduras',
|
||||
'Hungary',
|
||||
'Iceland',
|
||||
'India',
|
||||
'Indonesia',
|
||||
'Iran',
|
||||
'Iraq',
|
||||
'Ireland',
|
||||
'Israel',
|
||||
'Italy',
|
||||
'Jamaica',
|
||||
'Japan',
|
||||
'Jordan',
|
||||
'Kazakhstan',
|
||||
'Kenya',
|
||||
'Kiribati',
|
||||
'Korea, North',
|
||||
'Korea, South',
|
||||
'Kuwait',
|
||||
'Kyrgyzstan',
|
||||
'Laos',
|
||||
'Latvia',
|
||||
'Lebanon',
|
||||
'Lesotho',
|
||||
'Liberia',
|
||||
'Libya',
|
||||
'Liechtenstein',
|
||||
'Lithuania',
|
||||
'Luxembourg',
|
||||
'Macedonia',
|
||||
'Madagascar',
|
||||
'Malawi',
|
||||
'Malaysia',
|
||||
'Maldives',
|
||||
'Mali',
|
||||
'Malta',
|
||||
'Marshall Islands',
|
||||
'Mauritania',
|
||||
'Mauritius',
|
||||
'Mexico',
|
||||
'Micronesia',
|
||||
'Moldova',
|
||||
'Monaco',
|
||||
'Mongolia',
|
||||
'Morocco',
|
||||
'Mozambique',
|
||||
'Myanmar',
|
||||
'Namibia',
|
||||
'Nauru',
|
||||
'Nepal',
|
||||
'Netherlands',
|
||||
'New Zealand',
|
||||
'Nicaragua',
|
||||
'Niger',
|
||||
'Nigeria',
|
||||
'Norway',
|
||||
'Oman',
|
||||
'Pakistan',
|
||||
'Palau',
|
||||
'Panama',
|
||||
'Papua New Guinea',
|
||||
'Paraguay',
|
||||
'Peru',
|
||||
'Philippines',
|
||||
'Poland',
|
||||
'Portugal',
|
||||
'Qatar',
|
||||
'Romania',
|
||||
'Russia',
|
||||
'Rwanda',
|
||||
'Saint Kitts and Nevis',
|
||||
'Saint Lucia',
|
||||
'Saint Vincent',
|
||||
'Samoa',
|
||||
'San Marino',
|
||||
'Sao Tome and Principe',
|
||||
'Saudi Arabia',
|
||||
'Senegal',
|
||||
'Serbia and Montenegro',
|
||||
'Seychelles',
|
||||
'Sierra Leone',
|
||||
'Singapore',
|
||||
'Slovakia',
|
||||
'Slovenia',
|
||||
'Solomon Islands',
|
||||
'Somalia',
|
||||
'South Africa',
|
||||
'Spain',
|
||||
'Sri Lanka',
|
||||
'Sudan',
|
||||
'Suriname',
|
||||
'Swaziland',
|
||||
'Sweden',
|
||||
'Switzerland',
|
||||
'Syria',
|
||||
'Taiwan',
|
||||
'Tajikistan',
|
||||
'Tanzania',
|
||||
'Thailand',
|
||||
'Togo',
|
||||
'Tonga',
|
||||
'Trinidad and Tobago',
|
||||
'Tunisia',
|
||||
'Turkey',
|
||||
'Turkmenistan',
|
||||
'Tuvalu',
|
||||
'Uganda',
|
||||
'Ukraine',
|
||||
'United Arab Emirates',
|
||||
'United Kingdom',
|
||||
'United States',
|
||||
'Uruguay',
|
||||
'Uzbekistan',
|
||||
'Vanuatu',
|
||||
'Vatican City',
|
||||
'Venezuela',
|
||||
'Vietnam',
|
||||
'Yemen',
|
||||
'Zambia',
|
||||
'Zimbabwe',
|
||||
];
|
228
30-days-of-python/11_Funciones/01_funcion.py
Normal file
228
30-days-of-python/11_Funciones/01_funcion.py
Normal file
@ -0,0 +1,228 @@
|
||||
"""
|
||||
01_funcion.py
|
||||
"""
|
||||
import math
|
||||
|
||||
# Ejercicios: Nivel 1
|
||||
|
||||
# 1. Declara una función llamada add_two_numbers.
|
||||
# Toma dos parámetros y devuelve la suma.
|
||||
|
||||
|
||||
def add_two_numbers(a, b):
|
||||
return a + b
|
||||
|
||||
|
||||
print(f"La suma de los parámetros es igual a {add_two_numbers(2, 3)}")
|
||||
|
||||
# 2. El área de un círculo se calcula de la siguiente manera:
|
||||
# área = π x r x r.
|
||||
# Escribe una función que calcule area_of_circle.
|
||||
|
||||
|
||||
def area_of_circle(r):
|
||||
return math.pi * r * r
|
||||
|
||||
|
||||
radio = 5
|
||||
print(
|
||||
f"El área del círculo con el radio {radio} es igual a {area_of_circle(radio)}")
|
||||
|
||||
|
||||
# 3. Escribe una función llamada add_all_nums que tome
|
||||
# un número arbitrario de argumentos y sume todos los argumentos.
|
||||
# Verifica si todos los elementos de la lista son de tipo numérico.
|
||||
# Si no lo son, proporciona un mensaje de retroalimentación razonable.
|
||||
|
||||
|
||||
def add_all_nums(*args):
|
||||
total = 0
|
||||
for num in args:
|
||||
if isinstance(num, (int, float)):
|
||||
total += num
|
||||
|
||||
else:
|
||||
return "No todos los elementos son numéricos"
|
||||
return f"La suma de los parámetros es igual a {total}"
|
||||
|
||||
|
||||
print(f"{add_all_nums(1, 2, 3, 4, '5')}")
|
||||
|
||||
# 4. La temperatura en °C se puede convertir a °F
|
||||
# utilizando la siguiente fórmula:
|
||||
# °F = (°C x 9/5) + 32.
|
||||
# Escribe una función que convierta de °C a °F,
|
||||
# convert_celsius_to_fahrenheit.
|
||||
|
||||
|
||||
def convert_celsius_to_fahrenheit(celsius):
|
||||
return (celsius * 9/5) + 32
|
||||
|
||||
|
||||
temperatura = 36
|
||||
print(
|
||||
f"La temperatura de {temperatura} °C en fahrenheit es igual a {convert_celsius_to_fahrenheit(temperatura)}")
|
||||
|
||||
# 5. Escribe una función llamada check_season.
|
||||
# Toma un parámetro de mes y devuelve la estación:
|
||||
# Otoño, Invierno, Primavera o Verano.
|
||||
|
||||
|
||||
def check_season(month):
|
||||
if month in [12, 1, 2]:
|
||||
return "Invierno"
|
||||
elif month in [3, 4, 5]:
|
||||
return "Primavera"
|
||||
elif month in [6, 7, 8]:
|
||||
return "Verano"
|
||||
elif month in [9, 10, 11]:
|
||||
return "Otoño"
|
||||
else:
|
||||
return "Mes no válido"
|
||||
|
||||
|
||||
mes = 1
|
||||
print(f"El mes {mes} es de {check_season(mes)}")
|
||||
|
||||
# 6. Escribe una función llamada calculate_slope
|
||||
# que devuelva la pendiente de una ecuación lineal.
|
||||
|
||||
|
||||
def calculate_slope(x1, y1, x2, y2):
|
||||
return (y2 - y1) / (x2 - x1)
|
||||
|
||||
|
||||
print(
|
||||
f"La pendiente de la ecuación lineal es igual a {calculate_slope(2, 3, 6, 7)}")
|
||||
|
||||
# 7. La ecuación cuadrática se calcula de la siguiente manera: ax² + bx + c = 0.
|
||||
# Escribe una función que calcule el conjunto de soluciones de una ecuación cuadrática, solve_quadratic_eqn.
|
||||
|
||||
|
||||
def solve_quadratic_eqn(a, b, c):
|
||||
discriminant = b**2 - 4*a*c
|
||||
if discriminant > 0:
|
||||
x1 = (-b + math.sqrt(discriminant)) / (2*a)
|
||||
x2 = (-b - math.sqrt(discriminant)) / (2*a)
|
||||
return (x1, x2)
|
||||
elif discriminant == 0:
|
||||
x1 = -b / (2*a)
|
||||
return (x1,)
|
||||
else:
|
||||
return "No hay soluciones reales"
|
||||
|
||||
|
||||
print(
|
||||
f"Las soluciones de la ecuación cuadrática son {solve_quadratic_eqn(5, 8, 1)}")
|
||||
|
||||
# 8. Declara una función llamada print_list.
|
||||
# Toma una lista como parámetro
|
||||
# y imprime cada elemento de la lista.
|
||||
|
||||
|
||||
def print_list(my_list):
|
||||
for item in my_list:
|
||||
print(f" - {item}")
|
||||
|
||||
|
||||
lista_frutas = ["Manzana", "Pera", "Naranja", "Plátano", "Kiwi"]
|
||||
print_list(lista_frutas)
|
||||
|
||||
# 9. Declara una función llamada reverse_list.
|
||||
# Toma un arreglo como parámetro
|
||||
# y devuelve el arreglo invertido (usa bucles).
|
||||
|
||||
|
||||
def reverse_list(my_list):
|
||||
reversed_list = []
|
||||
i = len(my_list) - 1
|
||||
while i >= 0:
|
||||
reversed_list.append(my_list[i])
|
||||
i -= 1
|
||||
return reversed_list
|
||||
|
||||
|
||||
lista_numeros = [1, 2, 3, 4, 5]
|
||||
lista_letras = ["A", "B", "C"]
|
||||
print(reverse_list(lista_numeros))
|
||||
print(reverse_list(lista_letras))
|
||||
|
||||
|
||||
# 10. Declara una función llamada
|
||||
# capitalize_list_items.
|
||||
# Toma una lista como parámetro
|
||||
# y devuelve una lista de elementos en mayúsculas.
|
||||
|
||||
|
||||
def capitalize_list_items(my_list):
|
||||
return [item.upper() for item in my_list]
|
||||
|
||||
|
||||
print(capitalize_list_items(lista_frutas))
|
||||
|
||||
# 11. Declara una función llamada add_item.
|
||||
# Toma una lista y un parámetro de elemento.
|
||||
# Devuelve una lista con el elemento agregado al final.
|
||||
|
||||
|
||||
def add_item(my_list, item):
|
||||
my_list.append(item)
|
||||
return my_list
|
||||
|
||||
|
||||
print(add_item(lista_frutas, "Melón"))
|
||||
print(add_item(lista_numeros, 6))
|
||||
|
||||
# 12. Declara una función llamada remove_item.
|
||||
# Toma una lista y un parámetro de elemento.
|
||||
# Devuelve una lista con el elemento eliminado de ella.
|
||||
|
||||
|
||||
def remove_item(my_list, item):
|
||||
if item in my_list:
|
||||
my_list.remove(item)
|
||||
return my_list
|
||||
|
||||
|
||||
print(remove_item(lista_frutas, "Pera"))
|
||||
print(remove_item(lista_numeros, 2))
|
||||
|
||||
# 13. Declara una función llamada sum_of_numbers.
|
||||
# Toma un número como parámetro
|
||||
# y suma todos los números en ese rango.
|
||||
|
||||
|
||||
def sum_of_numbers(n):
|
||||
return sum(range(1, n+1))
|
||||
|
||||
|
||||
print(sum_of_numbers(7))
|
||||
|
||||
# 14. Declara una función llamada sum_of_odds.
|
||||
# Toma un número como parámetro
|
||||
# y suma todos los números impares en ese rango.
|
||||
|
||||
|
||||
def sum_of_odds(n):
|
||||
sum = 0
|
||||
for i in range(1, n+1, 2):
|
||||
sum += i
|
||||
return sum
|
||||
|
||||
|
||||
print(sum_of_odds(7))
|
||||
|
||||
|
||||
# 15. Declara una función llamada sum_of_even.
|
||||
# Toma un número como parámetro
|
||||
# y suma todos los números pares en ese rango.
|
||||
|
||||
|
||||
def sum_of_even(n):
|
||||
sum = 0
|
||||
for i in range(2, n+1, 2):
|
||||
sum += i
|
||||
return sum
|
||||
|
||||
|
||||
print(sum_of_even(7))
|
116
30-days-of-python/11_Funciones/02_funcion.py
Normal file
116
30-days-of-python/11_Funciones/02_funcion.py
Normal file
@ -0,0 +1,116 @@
|
||||
"""
|
||||
02_funcion.py
|
||||
"""
|
||||
|
||||
|
||||
# Ejercicios: Nivel 2
|
||||
|
||||
# 1. Declara una función llamada evens_and_odds.
|
||||
# Toma un número entero positivo como parámetro
|
||||
# y cuenta el número de pares e impares en ese número.
|
||||
|
||||
|
||||
def evens_and_odds(n):
|
||||
evens = 0
|
||||
odds = 0
|
||||
for i in range(1, n+1):
|
||||
if i % 2 == 0:
|
||||
evens += 1
|
||||
else:
|
||||
odds += 1
|
||||
return f"El número de impares es {odds}.\nEl número de pares es {evens}."
|
||||
|
||||
|
||||
print(evens_and_odds(101))
|
||||
|
||||
# 2. Llama a tu función factorial,
|
||||
# toma un número entero como parámetro
|
||||
# y devuelve el factorial de ese número.
|
||||
|
||||
|
||||
def factorial(n):
|
||||
if n == 0:
|
||||
return 1
|
||||
else:
|
||||
return n * factorial(n-1)
|
||||
|
||||
|
||||
num_factorial = 5
|
||||
print(f"El factorial de {num_factorial} es {factorial(num_factorial)}.")
|
||||
|
||||
# 3. Llama a tu función is_empty,
|
||||
# toma un parámetro
|
||||
# y verifica si está vacío o no.
|
||||
|
||||
|
||||
def is_empty(item):
|
||||
if not item:
|
||||
return "La variable está vacía."
|
||||
else:
|
||||
return "La variable no está vacía."
|
||||
|
||||
|
||||
print(is_empty(""))
|
||||
|
||||
# 4. Escribe diferentes funciones que tomen listas.
|
||||
# Deben calcular la media, mediana, moda, rango,
|
||||
# varianza y desviación estándar.
|
||||
# Las funciones se llaman calculate_mean,
|
||||
# calculate_median, calculate_mode,
|
||||
# calculate_range, calculate_variance
|
||||
# y calculate_std (desviación estándar).
|
||||
|
||||
|
||||
def calculate_mean(my_list):
|
||||
return sum(my_list) / len(my_list)
|
||||
|
||||
|
||||
def calculate_median(my_list):
|
||||
sorted_list = sorted(my_list)
|
||||
n = len(my_list)
|
||||
if n % 2 == 0:
|
||||
return (sorted_list[n//2-1] + sorted_list[n//2]) / 2
|
||||
else:
|
||||
return sorted_list[n//2]
|
||||
|
||||
|
||||
def calculate_mode(my_list):
|
||||
freq_dict = {}
|
||||
for num in my_list:
|
||||
if num in freq_dict:
|
||||
freq_dict[num] += 1
|
||||
else:
|
||||
freq_dict[num] = 1
|
||||
max_freq = max(freq_dict.values())
|
||||
mode_list = [num for num, freq in freq_dict.items() if freq == max_freq]
|
||||
if len(mode_list) == len(my_list):
|
||||
return None
|
||||
elif len(mode_list) == 1:
|
||||
return mode_list[0]
|
||||
else:
|
||||
return mode_list
|
||||
|
||||
|
||||
def calculate_range(my_list):
|
||||
return max(my_list) - min(my_list)
|
||||
|
||||
|
||||
def calculate_variance(my_list):
|
||||
mean = calculate_mean(my_list)
|
||||
return sum([(x - mean)**2 for x in my_list]) / (len(my_list) - 1)
|
||||
|
||||
|
||||
def calculate_std(my_list):
|
||||
return calculate_variance(my_list) ** 0.5
|
||||
|
||||
|
||||
my_list = [1, 2, 3, 4, 5, 5, 6, 7, 8, 9]
|
||||
|
||||
print(f"""De la lista {my_list} obtenemos:
|
||||
- Media: {calculate_mean(my_list)}
|
||||
- Mediana: {calculate_median(my_list)}
|
||||
- Moda: {calculate_mode(my_list)}
|
||||
- Rango: {calculate_range(my_list)}
|
||||
- Varianza: {calculate_variance(my_list)}
|
||||
- Desviación estándar: {calculate_std(my_list)}
|
||||
""")
|
133
30-days-of-python/11_Funciones/03_funcion.py
Normal file
133
30-days-of-python/11_Funciones/03_funcion.py
Normal file
@ -0,0 +1,133 @@
|
||||
"""
|
||||
03_funcion.py
|
||||
"""
|
||||
import countries_data
|
||||
|
||||
# Ejercicios: Nivel 3
|
||||
|
||||
# 1. Escribe una función llamada is_prime
|
||||
# que compruebe si un número es primo.
|
||||
|
||||
|
||||
def is_prime(num):
|
||||
if num <= 1:
|
||||
return "No"
|
||||
elif num == 2:
|
||||
return "Sí"
|
||||
elif num % 2 == 0:
|
||||
return "No"
|
||||
else:
|
||||
for i in range(3, int(num**0.5) + 1, 2):
|
||||
if num % i == 0:
|
||||
return "No"
|
||||
return "Sí"
|
||||
|
||||
|
||||
numero_primo = 19
|
||||
|
||||
print(f"¿El número {numero_primo} es primo? {is_prime(numero_primo)}")
|
||||
|
||||
# 2. Escribe una función que compruebe
|
||||
# si todos los elementos de una lista son únicos.
|
||||
|
||||
|
||||
def are_elements_unique(my_list):
|
||||
if len(my_list) == len(set(my_list)):
|
||||
return "Sí"
|
||||
else:
|
||||
return "No"
|
||||
|
||||
|
||||
lista_elementos = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
||||
print(
|
||||
f"¿Los elementos de la lista {lista_elementos} son únicos? {are_elements_unique(lista_elementos)}")
|
||||
|
||||
# 3. Escribe una función que compruebe
|
||||
# si todos los elementos de una lista
|
||||
# son del mismo tipo de dato.
|
||||
|
||||
|
||||
def are_elements_same_type(my_list):
|
||||
first_type = type(my_list[0])
|
||||
if not my_list:
|
||||
return "Esto no es una lista."
|
||||
elif all(isinstance(x, first_type) for x in my_list):
|
||||
return "Sí"
|
||||
else:
|
||||
return "No"
|
||||
|
||||
|
||||
print(
|
||||
f"¿Los elementos de la lista {lista_elementos} son del mismo tipo de dato? {are_elements_same_type(lista_elementos)}")
|
||||
|
||||
# 4. Escribe una función que compruebe
|
||||
# si una variable proporcionada
|
||||
# es una variable válida en Python.
|
||||
|
||||
|
||||
def is_valid_variable_name(variable_name):
|
||||
try:
|
||||
exec(f"{variable_name} = None")
|
||||
del locals()[variable_name]
|
||||
return "Sí"
|
||||
except:
|
||||
return "No"
|
||||
|
||||
|
||||
print(
|
||||
f"¿La variable 'variable_name' es válida? {is_valid_variable_name('variable_name')}")
|
||||
|
||||
# 5. Ve a la carpeta de datos
|
||||
# y accede al archivo countries-data.py.
|
||||
# Crea una función llamada
|
||||
# most_spoken_languages_in_the_world.
|
||||
# Debe devolver las 10 o 20 lenguas
|
||||
# más habladas en orden descendente.
|
||||
# Crea una función llamada
|
||||
# most_populated_countries.
|
||||
# Debe devolver los 10 o 20 países
|
||||
# más poblados en orden descendente.
|
||||
# Suponiendo que los datos están almacenados
|
||||
# en una lista llamada "countries_data".
|
||||
|
||||
|
||||
# Función para obtener las lenguas
|
||||
# más habladas en el mundo.
|
||||
|
||||
def most_spoken_languages_in_the_world():
|
||||
all_languages = []
|
||||
for country in countries_data.countries_data:
|
||||
all_languages.extend(country['languages'])
|
||||
|
||||
language_count = {}
|
||||
|
||||
for language in all_languages:
|
||||
if language in language_count:
|
||||
language_count[language] += 1
|
||||
else:
|
||||
language_count[language] = 1
|
||||
|
||||
sorted_languages = sorted(language_count.items(),
|
||||
key=lambda x: x[1],
|
||||
reverse=True)[:10]
|
||||
|
||||
language_list = [f"{i+1}. {language[0]}" for i,
|
||||
language in enumerate(sorted_languages)]
|
||||
return "\n".join(language_list)
|
||||
|
||||
|
||||
print(most_spoken_languages_in_the_world())
|
||||
|
||||
# Función para obtener los países
|
||||
# más poblados en el mundo.
|
||||
|
||||
|
||||
def most_populated_countries():
|
||||
sorted_countries = sorted(
|
||||
countries_data.countries_data, key=lambda x: x['population'], reverse=True)[:10]
|
||||
country_list = [f"{i+1}. {country['name']}" for i,
|
||||
country in enumerate(sorted_countries)]
|
||||
return "\n".join(country_list)
|
||||
|
||||
|
||||
print(most_populated_countries())
|
2620
30-days-of-python/11_Funciones/countries_data.py
Normal file
2620
30-days-of-python/11_Funciones/countries_data.py
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user