<jupyter_start><jupyter_text>Clase 02 SINTAXIS Y TIPOS DE DATOS En esta lección revisaremos los tipos de datos, aprenderemos cómo se pueden almacenar los datos en las listas de Python y sobre el concepto de objetos en la programación.  2.1 Tipos de datos Los tipos de variables posibles en Python son: Números:*   string (str): Son caracteres, no tienen valor numérico*   integer (int): Números enteros o naturales*   float (float): Números flotantes o reales<jupyter_code>a = 3        # esto es un número entero [int].
print("a es: ", type(a))
print(a)

b = 39.747  # esto es un número de coma flotante (float)
print("\nb es: ", type(b))
print(b)

z = 4 + 6j   # esto es un número complejo 
print("\nz es: ", type(z))
print(z)

str1 = 'hola'

str2 = int("123")

print("\na+b=", a + b)
print("\nstr2 + a = ", str2 + a)
print(type(str2))<jupyter_output><empty_output><jupyter_text>Cadena de texto:<jupyter_code>c1 = "Bienvenido año nuevo "    # esto es una cadena de caracteres.
print("c1 es: ", type(c1))
print(c1)

c2 = "2019"          # esto es una cadena de caracteres. 
print("\nc2 es: ", type(c2))
print(c2)

c3 = c1 + c2         # concatenación de dos cadenas de caracteres
print("\nc3 es: ", type(c3))
print(c3)
print("\nc3 tiene ", len(c3), "caracteres") # La función [len] devuelve el número de caracteres de una cadena.<jupyter_output><empty_output><jupyter_text>Booleanos:El tipo booleano sólo puede tener dos valores: True (cierto) y False (falso). Estos valores son especialmente importantes para las expresiones condicionales y los bucles.<jupyter_code># Conjunción
True and True
#True and False
# Disyunción
#True or True
#True or False
False or False<jupyter_output><empty_output><jupyter_text>Ejemplos:<jupyter_code>dd= not True
print("dd es: ", dd)
not not not not not True
(4 < 5) and (5 < 6)
(4 < 5 ) and (9 < 6)
x1 = (1 == 2) or (2 == 2)
x2 = (1 == 2) and (2 == 2)

print("x1 es: ", x1)
print("x2 es: ", x2)
2 + 2 == 4 and not 2 + 2 == 5 and 2 * 2 == 2 + 2
nombre = 'CHOSICA'
id = 202906
longitud = 76+41/60+23.8/3600 # 76° 41'23.8
latitud = 11+55/60+48.5/3600 # 11° 55'48.5"
tipo = 'Hidrometrica'
fecha = "28-02-1998"<jupyter_output><empty_output><jupyter_text>Podemos explorar los diferentes tipos de datos almacenados en variables usando la type()función.<jupyter_code>type(nombre)
type(id)
type(latitud)
type(tipo)<jupyter_output><empty_output><jupyter_text>Métodos de cadenas Recuerde que los tipos de datos son importantes porque algunos no son compatibles entre sí.<jupyter_code>nombre + id<jupyter_output><empty_output><jupyter_text>Aquí obtenemos una **TypeError** porque Python no sabe cómo combinar una cadena de caracteres (nombre) con un valor entero ( id). En otros lenguajes de programación es necesario escribir o declarar variables antes que puedan almacenar cualquier cosa en ellas. Esto no es necesario cuando trabajas con cadenas de caracteres en Python.<jupyter_code>cadena1 = "océano "
cadena2 = "atmósfera"

cadena = "Interacción "+cadena1 + cadena2
print(cadena)
cadena1 = "océano "
cadena2 = "atmósfera"

cadena = "Interacción "+cadena1 + cadena2
print(cadena)
print("--"*2)

cadena1 = "océano \n"
cadena2 = "atmósfera"
cadena = "Interacción "+cadena1 + cadena2
print(cadena)
cadena = "123"
numero = str(123)
c = cadena + numero
print(c)<jupyter_output><empty_output><jupyter_text>Indexación de cadenas<jupyter_code>cadena1 = "océano "
cadena2 = "atmósfera"

cadena = "Interacción "+cadena1 + cadena2
print(cadena)
print("\n")

print("índice [0]:", cadena[0])
print("índice [:] al [4]:", cadena[:4])
print("------------------------------------------------")

print("índice [-1]:", cadena[-1])
print("índice [-1] al [-4]:", cadena[-4:])<jupyter_output><empty_output><jupyter_text>Multiplicar cadena<jupyter_code>cadena1 = "océano "
cadena2 = "atmósfera"

cadena = "Interacción "*3 + cadena1 + cadena2
print(cadena)

print("\n")
cadena = "Interacción "*6 + cadena1 + cadena2
print(cadena)<jupyter_output><empty_output><jupyter_text>Añadir caracteres a una cadena<jupyter_code>cadena1 = "océano "
cadena2 = "atmósfera"

cadena = "Interacción " + cadena1 + cadena2
print(cadena)

print("\n")
cadena += " continente"
print(cadena)<jupyter_output><empty_output><jupyter_text>Determinar el número de caracteres de una cadenaLa función len devuelve el número de caracteres de una cadena. Esto es considerando la cantidad de caracteres y espacios en blanco.<jupyter_code>cadena1 = "océano "
print(len(cadena1))

cadena2 = "atmósfera"
print(len(cadena2))

cadena = "Interacción " + cadena1 + cadena2
print(len(cadena))<jupyter_output><empty_output><jupyter_text>Buscar sub-cadenasEs posible recorrer todas las sub cadenas de una cadena, utilizando el método find, quién devuelve el índice de inicio de la sub-cadena.<jupyter_code>cadena1 = "océano "
cadena2 = "atmósfera"

cadena = "Interacción " + cadena1 + cadena2
print(cadena)

buscarSC = cadena.find("atmósfera")
print(buscarSC)<jupyter_output><empty_output><jupyter_text>Si la sub-cadena no se encuentra dentro de la cadena, el método **find** devolverá el valor -1<jupyter_code>cadena1 = "océano "
cadena2 = "atmósfera"

cadena = "Interacción " + cadena1 + cadena2
print(cadena)

buscarSC = cadena.find("acción océ")
print(buscarSC)<jupyter_output><empty_output><jupyter_text>Convertir: minúsculas y mayusculasLos caracteres tienen diferentes métodos. Sigue de cerca las instrucciones para descubrir algunas de ellas. Si desea descubrirlos con más detalle, siempre puede escribir **help(str)**.**upper():** devuelve una copia de la cadena en la que todos los caracteres como mayúsculas.**lower():** devuelve una copia de la cadena en la que todos los caracteres como minúsculas.<jupyter_code>cadena1 = "océano "
cadena2 = "atmósfera"

cadena = "Interacción " + cadena1 + cadena2

print(cadena)
print(cadena.upper())
print(cadena.lower())<jupyter_output><empty_output><jupyter_text>Reemplazar caracteres<jupyter_code>cadena1 = "océano "
cadena2 = "atmósfera"

cadena = "Interacción " + cadena1 + cadena2
print(cadena)

newCad = cadena.replace("o", "land")
print(newCad)<jupyter_output><empty_output><jupyter_text>Convertir datos de un tipo a otro (Coerción) No es el caso que variables como la ***nombre*** y ***id***  no puedan combinarse en absoluto, para combinar una cadena de caracteres con un número necesitamos realizar una conversión de tipo de datos para que sean compatibles. Por ejemplo, podríamos convertir el ***id*** entero en una cadena de caracteres usando la función str().<jupyter_code>idstr = str(id)
type(id)
print(id)<jupyter_output><empty_output><jupyter_text>Como puede ver, **str()** convierte un valor numérico en una cadena de caracteres con los mismos números que antes. Similar a usar **str()** para convertir números en cadenas de caracteres, **int()** se puede usar para convertir cadenas o números de punto flotante en enteros y **float()** se puede usar para convertir cadenas o números enteros en números de punto flotante.  Combinando texto y números  Aunque la mayoría de las operaciones matemáticas operan con valores numéricos, una forma común de combinar cadenas de caracteres es usar el operador de suma +.<jupyter_code>nombreeid = nombre + ": " + str(id)
print(nombreeid)<jupyter_output><empty_output><jupyter_text>Tenga en cuenta que aquí estamos convirtiendo **id** una cadena de caracteres utilizando la **str()** función dentro de la asignación a la variable **nombreeid**. Alternativamente, podríamos haber añadido simplemente **nombre** y **idstr**.<jupyter_code><jupyter_output><empty_output><jupyter_text>Tips  AyudaTal vez ya sabes el nombre de una función, pero todavía tiene que averiguar cómo usarlo. Irónicamente, hay que pedir información sobre una función con otra función: **help()**. También se puede usar **?** antes del nombre de la función.<jupyter_code>help(max)
?max<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1197452229299363, 'fraction_numerical': 0.024585987261146497, 'mean_word_length': 5.537052456286428, 'pattern_counts': {'":': 1, '<': 81, '<?xml version=': 0, '>': 77, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '19', 'dir': 'jupyter-structured-clean-dedup', 'id': '485631', 'license': 'CC-BY-4.0', 'n_tokens_mistral': 3071, 'n_tokens_neox': 2975, 'n_words': 864, 'path': 'jupyter/clase02_SintaxisPython.ipynb', 'repo_name': 'JoseCosiosll/Subir-Codigo', 'size': '7850'}