def tieneElementos(milista):
    return len(milista) > 0
print(tieneElementos([]))
print(tieneElementos([1, 3, 96]))

"""
Explanation: Ejercicios 2
1 Ejercicio
Escribir una función que reciba como parámetro una lista de elementos y devuelva el valor True si la lista posee elementos y False en caso contrario.
End of explanation
"""


# Sol: 
l = [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
print(l[0])
print(l[-1])
print(l[-2], l[-1])
print(l[-2:])
print()
print(l[::2])
print(l[1::2])
print()
print(len(l)-1)

"""
Explanation: 2 Ejercicio
Dada la lista $L = [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]$, escribe expresiones en Python que produzcan los siguientes resultados:

El primer elemento de la lista.
El último elemento de la lista (Sin conocer la longitud de la lista).
La sublista con los dos últimos elementos. (Sol: [8, 9])
La sublista de los elementos que ocupan posiciones pares. (Sol: [1, 3, 5, 7, 9])
La sublista de los elementos que ocupan posiciones impares. (Sol: [2, 4, 6, 8])
End of explanation
"""


# Sol:
# Definimos la lista 'a'
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 2, 4, 6, 8, 1, 4]
# Definimos la función 'repeticiones()' tomando como base los valores de la lista 'a'
def repeticiones(a):
# mediante a.count(valor) recorremos la lista 'a' para comproobar cuantas veces se repite un valor determinado
    return a.count(4)
# Mostramos el resultado
print('El número 4 se repite',repeticiones(a),'veces en la lista',a)

# En base a la lista 'a' antes definida, pasamos a averiguar el nº de elementos de la lista para calcular
# que porcentaje de veces se repite el número 'n'
def porcentaje(a):
    nelementos = len(a)
    nrepeticiones = a.count(4)
    return nrepeticiones / nelementos * 100
print("Lo que supone un",porcentaje(a),'%')


# el 4 se repite 3 veces en la lista [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 2, 4, 6, 8, 1, 4]
# lo que supone un  18.75 % 


"""
Explanation: 3 Ejercicio
Dada una lista de enteros $a$ y un número entero $n$, define:
1. una función que calcule el número de veces que se repite $n$ en $a$.
2. una función que calcule el porcentaje de veces que se repite $n$ en $a$.
Nota: utiliza los métodos len y count. 
* Puedes ejecutar list.count? para obtener ayuda del método count.
* Puedes ejecutar help(list.count) para obtener ayuda del método count.
End of explanation
"""


# Sol:
# Creamos una variable 'lista' cuyo rango empieza en 10 y acaba en 100, con un salto de 10.
# Su expresión matemática sería [10,100) donde se incluye el 10(inicio), pero no el 100(fin)
# de ahí que se muestre [10, 20, 30, 40, 50, 60, 70, 80, 90]
lista = range(10,100,10)
list(lista)

"""
Explanation: 4 Ejercicio
Utiliza la función range  para generar listas de elementos. 
Genera de forma automática las siguientes lista:  [10, 20, 30, 40, 50, 60, 70, 80, 90]
End of explanation
"""


# Sol: 
# Definimos la cadena como 's'
s = 'Hola, me llamo Iñigo Montoya, tú mataste a mi padre ...Prepárate a morir!'
# Definimos una nueva cadena como 'sMayus' para capitalizar todas las letras, como no podemos modificar una cadena
# debemos crear una nueva y modificar esta en función de la cadena original
sMayus = s.upper()
# Mostramos el resultado
print(sMayus)
# Modificamos el valor de 's' y lo ponemos todo en minúsculas
print(s.lower())
s, sMayus

"""
Explanation: 5 Ejercicio
El método upper del tipo string genera una nueva cadena de caracteres, donde todos los caracteres son mayúsculas.
Dada la siguiente cadena:
'Hola, me llamo Iñigo Montoya, tú mataste a mi padre. ... Prepárate a morir'

Genera la cadena en mayúsculas
Ejecuta el método split. ¿Qué hace?
Escribe la expresión Python que calcula el número de palabras de la cadena.
Ejecuta el método lower.
Ejecuta el método title.
Ejecuta dir(str) para listar los métodos disponibles.
End of explanation
"""


