<jupyter_start><jupyter_text>Pregunta 1¿Cuál es el valor final de a, b y c? (atención a los tipos de número decimal y entero)a = 5 * 11b = a / 2.c, a = b * 2, b + 1<jupyter_code># Respuesta
# a será igual a 55 de tipo int porque los 2 valores que estamos multiplicando
# son de tipo int
a = 5*11
print(f'a es de tipo {type(a)}')
# b será igual a 55/2 de tipo float porque al dividir, aunque el resultado
#  ser un numero entero, python devuelve un float
b = a/2.
type(b)
print(f'b es de tipo {type(b)}')
# c será de tipo float porque se crea a partir de un float (b)
# a pasará a ser float porque se crea a partir de un float (b) y un int
c,a = b*2,b+1
print(f'c es de tipo {type(c)}')
print(f'a es de tipo {type(a)}')<jupyter_output>a es de tipo <class 'int'>
b es de tipo <class 'float'>
c es de tipo <class 'float'>
a es de tipo <class 'float'><jupyter_text>Pregunta 2Identifica tres tipos de datos de Python y explica brevemente en qué se diferencian. Explica la diferencia entre el tipo lista y el tipo tupla.<jupyter_code># Respuesta
# int --> entero, contiene numeros enteros
# float --> numeros decimales, contiene numeros decimales
# str --> texto, contiene variables tipo texto (pueden ser numeros, pero son considerados como texto)
#la principla diferencia entre lista y tupla es que la tupla no se puede modificar<jupyter_output><empty_output><jupyter_text>Pregunta 3¿Cuál es el resultado de la operación lógica ` 'manzana'> 'casa'`? Explica por qué. **Nota**: Consultad en estándar [Unicode](https://es.wikipedia.org/wiki/Unicode) para la codificación de caracteres.<jupyter_code># Respuesta
# el resultado es true porque compara la posición de la primmera letra de "manzana"
# con la posición de la primera letra de "casa" y en este caso la m está después
# que la c en la lista unicode
# si por ejemplo ponemos la m de manzana en mayuscula el resultado es False 
# porque van primero las mayusculas
'manzana'> 'casa'<jupyter_output><empty_output><jupyter_text>Ejercicio 1Escribir un programa que seleccione la cadena "analista" a partir de la cadena: "Ana es buena analista de datos.". Mostrar el resultado por pantalla.<jupyter_code># Respuesta
cadena = 'Ana es buena analista de datos'
if 'analista' in cadena:
    print('analista')
# no estoy seguro de que sea esto lo que se pide<jupyter_output>analista<jupyter_text>Ejercicio 2Qué expresión en Python necesitamos para conseguir el _string_"nohtyPythonython" utilizando sólo la palabra "Python"?<jupyter_code># Respuesta
word = 'Python'
word_v2 = ''
for i in range((len(word)-1),0,-1):
    word_v2 += word[i]
for i in range(len(word)):
    word_v2 += word[i]
for i in range(1,len(word)):
    word_v2 += word[i]
word_v3 = word[::-1]+word[1:]+word[1:]
print(word_v3)<jupyter_output>nohtyPythonython<jupyter_text>Ejercicio 3Escribe un programa que asigne dos valores enteros cualquiera (elije un número entero aleatorio) a dos variables con nombre `a` y `b`. Utiliza las variables definidas anteriormente para evaluar la siguiente expresión matemática:( a2 + b2 )2<jupyter_code># Respuesta

def numeros_aleatroios(x=1,y=10):
    '''
    x e y es el intervalo de numeros entre los que quieres el números aleatorio
    '''
    import random
    a = random.randint(x,y)
    return a

a = numeros_aleatroios()
b = numeros_aleatroios()

def expresion_mat (x,y):
    return (x**2 + y**2)**2

expresion_mat(a,b)<jupyter_output><empty_output><jupyter_text>Ejercicio 4Escribir un programa que calcule el volumen de una pirámide cuadrangular con una base de 4x5 metros de longitud y anchura respectivamente, y con una altura de 7,5 m. Recuerda que la fórmula para calcular el volumen es donde _l_ y _w_ son la longitud y la anchura de la base, y _h_ es la altura.<jupyter_code># Respuesta
def vol_piramide(a,b,c):
    '''
    La funnción calcula el volumen de una piramide de dimensiones a,b,c siendo
    a * b las medias de la base y c la altura
    '''
    return ((1/3)*a*b*c)

vol_piramide_eje_4 = vol_piramide(4,5,7.5)
print(vol_piramide_eje_4)<jupyter_output>49.99999999999999<jupyter_text>Ejercicio 5Escribe un programa que defina una lista con el nombre de todos los meses del año. Haz que muestre los meses que corresponden a otoño.<jupyter_code># Respuesta
def meses_anho (est):
    meses = ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre']
    if est == 'Otoño':
        return (meses[-4],meses[-3],meses[-2])
    elif est == 'Primavera':
        return (meses[2],meses[3],meses[4])
    elif est == 'invierno':
        return (meses[-1],meses[0],meses[1])
    else:
        return (meses[5],meses[6],meses[7])

meses_otonho = meses_anho('Otoño')
print(meses_otonho)<jupyter_output>('Septiembre', 'Octubre', 'Noviembre')<jupyter_text>Ejercicio 6Escribe un programa que a partir de la lista de números dada muestre por pantalla una cadena de caracteres con todos los números, separados entre sí por un guión, y duplicando el primero y el último elemento de la lista.Así, por ejemplo, para la lista ['1', '2', '3'] , el programa debería mostrar la cadena: '1-1-2-3-3'.<jupyter_code># Respuesta
def cad_caracteres(lista):
    '''
    Introduce una lista de números
    '''
    cadena = ''
    for i in range(len(lista)):
        if i == 0:
            cadena = cadena + str(lista[i]) + '-' + str(lista[i]) + '-'
        elif i == (len(lista)-1):
            cadena = cadena + str(lista[i]) + '-' + str(lista[i])
        else:
            cadena = cadena + str(lista[i]) + '-'
    print(cadena)<jupyter_output><empty_output><jupyter_text>Ejercicio 7Ordena la siguiente lista de cadenas de caracteres:1. Invirtiendo el orden original2. En orden alfabético inverso**Nota**: Puedes consultar la documentación oficial de la función [`sorted ()`](https://docs.python.org/3/library/functions.htmlsorted) para ver qué parámetros puedes utilizar para resolver la segunda parte de la actividad.<jupyter_code>st_chars = ["<NAME>", "<NAME>", "Odo", "Quark", "<NAME>"]
st_chars_inv = st_chars[::-1]
print(st_chars_inv)
st_chars_alf_inv = sorted(st_chars,reverse = True)
print(st_chars_alf_inv)<jupyter_output>['<NAME>', 'Quark', 'Odo', '<NAME>', '<NAME>']
['Quark', 'Odo', '<NAME>', '<NAME>', '<NAME>']<jupyter_text>Ejercicio 8A partir de la siguiente lista,```A_list = [42, 7.5, "Answer to the Ultimate Question", "Dave", 7.5]```proporciona expresiones que retornen:1. El número de veces que aparece el elemento `7.5` en la lista.2. La posición de la primera aparición del valor `7.5`.3. La misma lista sin el último elemento.**Nota**: En el notebook de teoría hemos visto que son las listas y algunas operaciones sobre ellas. Para hacer la actividad, necesitaréis investigar algunas operaciones adicionales que podemos realizar sobre listas. Para ello podéis consultar la documentación oficial de Python sobre listas ([intro](https://docs.python.org/3/tutorial/introduction.htmllists) y [más sobre listas](https://docs.python.org/3/tutorial/datastructures.htmlmore-on-lists)).<jupyter_code># Respuesta
A_list = [42, 7.5, "Answer to the Ultimate Question", "Dave", 7.5]
num = A_list.count(7.5)
print(num)
posicion = A_list.index(7.5)
print(posicion)
B_list = A_list[:-1]
print(B_list)<jupyter_output>2
1
[42, 7.5, 'Answer to the Ultimate Question', 'Dave']<jupyter_text>Ejercicio 9¿Qué expresión en Python necesitamos para conseguir la _string_ `Learning Python` utilizando sólo las variables` str1` y `str2` definidas?<jupyter_code># Respuesta
str1 = 'Learning'
str2 = 'Python'
str3= str1+' '+str2
print(str3)<jupyter_output>Learning Python<jupyter_text>Ejercicio 10El codigo que se presenta a continuación no funciona: Corrige el error y explica por qué sucede.<jupyter_code>name = 'Alex'

age = 20

print("Hello, my name is %s and I'm %d years old!" % (name, age))
# El simbolo %d sustituye a numeros no a string por lo que al intentar 
# sustituirlo por un string da error, para solucionarlo hay que poner %s 
# en el lugar en el que vayamos a colocar un str<jupyter_output>Hello, my name is Alex and I'm 20 years old!<jupyter_text>Ejercicio 11En este ejercicio utilizaremos la frase: La paciencia es la madre de la ciencia.a) Extrae las palabras paciencia y ciencia de la cadena de strings definida anteriormente.b) Crea la palabra ciencia a partir de paciencia, y la palabra paciencia a partir de ciencia.c) Separa la frase en las diferentes palabras que la forman (e.g. "La", "paciencia," es ", etc). ¿Cuál es el separador que debemos usar?d) Vuelve a unir los elementos de la frase mediante "-" (e.g. "La-paciencia-es ...").<jupyter_code># Respuesta
frase = 'La paciencia es la madre de la ciencia'
if 'paciencia' in frase:
    word_1 = 'paciencia'
if 'ciencia' in frase:
    word_2 = 'ciencia'
word_1_2 = word_1[2:]
word_2_1 = 'pa' + word_2
lista_frase = frase.split() 
# El separador sería el espacio, pero si no pones nada también lo hace
#correctamente, ¿por defecto separa por el espacio?
print(lista_frase)
lista_frase_2 = ''
for i in range(len(lista_frase)):
    if i == 0:
        lista_frase_2 += lista_frase[i]
    else:
        lista_frase_2 += '-' + lista_frase[i]
print(lista_frase_2)
print(word_1_2)
print(word_2_1)<jupyter_output>['La', 'paciencia', 'es', 'la', 'madre', 'de', 'la', 'ciencia']
La-paciencia-es-la-madre-de-la-ciencia
ciencia
paciencia
{'fraction_non_alphanumeric': 0.11303692539562923, 'fraction_numerical': 0.018516524921950696, 'mean_word_length': 4.766604593420236, 'pattern_counts': {'":': 0, '<': 60, '<?xml version=': 0, '>': 65, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 1, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '14', 'dir': 'jupyter-structured-clean-dedup', 'id': '16251', 'license': 'MIT', 'n_tokens_mistral': 3522, 'n_tokens_neox': 3456, 'n_words': 1129, 'path': '02_PYTHON/week05/pra/pra_python_01_Saul_Arranz.ipynb', 'repo_name': 'SaulAH/The_Bridge_DataScience_PT_ALUMNI_feb22', 'size': '9337'}