# data[].attributes.headline
1) Tipos de datos: str, int, float, bool

# data[].attributes.subject
1) Tipos de datos: str, int, float, bool

# data[].attributes.body
1.1) str.- se escriben dentro de " " comillas, ej: "Python" , "2020", "iphone 11"
1.2) int.- datos numéricos, ej: 1, 100, 25000
1.3) float.- datos numéricos con decimales, ej: 2.5   3.0  100.99
1.4) bool.- valores de verdad de una condición, son: True, False

# data[].attributes.body
2. 1) Operadores aritméticos
+ suma,  - resta,  *multiplicación,  /división,  %modulo(residuo de división),  **potencia,  //división entera
2. 2) Operadores relacionales
==igual que,  !=distinto que,  >mayor que,  <menor que,  >=mayor o igual que,  <=menor o igual que,
2.3) Operadores de incremento
+=incremento,  -=decremento,  *=multincremento,  /=decremento por división,  %=acumulador de residuo,  **=incremento por potencia
4) Operadores lógicos
and Conjunción,  or Disyunción,  not Negación

# data[].attributes.body
3.1) Método concatenación.- Juntar cadenas de caracteres, con un +
3.2) Format.- Se sustituye { } por el argumento de format( ), ej:
nombre= Python
materia= programación
print("aprendo { } en la materia { } ".format(nombre, materia))
3.3) input.- permite al usuario el ingreso de datos tipo str, ej: user= input("Ingresar nombre: )

# data[].attributes.body
4.1) Índices.- toda cadena de caracteres tiene posiciones(índices), son números enteros que va desde el 0 hasta n - 1 (n= numero de caracteres). Los índices también pueden ser negativos, iniciando desde - 1, ej:
p  y  t  h  o n
0  1  2  3  4  5
-6 -5 -4 -3 -2 -1
4.2) Index.- str.index(str) da la posición de una cadena dentro de otra. ej:
cadena= "iphone 11 pro"
subcadena= cadena.index("11")
print(subcadena) -->  7
4.3) Slicing.- Obtener uno o mas caracteres a partir de la posición, (no incluye la posición del ultimo). ej:
materia= "calculo"
letra= materia[4]
print(letra)  -->  u
marca= "Ferrari"
letras= marca[1:5]
print(letras)  -->  erra
4.4) Invertir cadena.-  str[ : : -1]
compu= "lenovo"
invCompu= compu[ : : -1]
print(invCompu)  -->  ovonel

# data[].attributes.body
--Funciones que retornan True o False--
5.1) str.isdigit( ).- verifica que todos los caracteres de una cadena sean numéricos
5.2) str.isalpha( ).- Verifica que todos los caracteres sean solo letras, no espacios, ni símbolos
5.3) str.islower( ).- Verifica que la cadena sea toda en minúscula
5.4) str.isupper( ).- Verifica que toda la cadena sea en mayúsculas
5.5) str.startwith(str).- Comprueba si una cadena empieza con tan cadena
5.6) str.endswith(str).- Comprueba si una cadena termina con tal cadena

--Funciones que retornan un int
5.7) len(str).- determina la longitud de una cadena o lista. ej:
frase= len("Pancakes forever")
print(frase)  -->  16
5.8) str.count(str).- Cuenta la cantidad de veces que esta repetida una cadena dentro de otra, o un elemento dentro de una lista. ej:
frase= "tigres no tragan del trigal"
cantd= frase.count("tr")
print(cantd)  -->  3

--Funciones que modifican la cadena--
5.9) str.lower( ).- cambia las mayúsculas de una cadena a minúsculas
5.10) str.upper( ).- cambia las minúsculas de una cadena a mayúsculas
5.11) str.tittle( ).- todas las palabras de la cadena empiezan con mayúsculas
5.12) str.replace(str1, str2).- remplazan el str1 por el str2 en la cadena, ej:
info= "me gustan mas las verduras"
nuevo= info.replace("verduras", "frutas")
print(nuevo)  -->  "me gustan mas las frutas"
5.13) str.strip( ).- si no recibe argumento borra espacios, tabs, y tabs de izquierda y derecha, ej:
nombre= "  programación\t "
borra= nombre.strip( )
print(borra)  -->  "programación"

# data[].attributes.body
6.1) Las listas son mutables( se pueden modificar), ej:
materias1S= [ "calculo1v", "programación" "química", "comunicación"]
materias1S[3] = "fisica1"
print(materias1S)  -->   ["calculo1v", "programación" "química", fisica1" ]
6.2) str.split(str) .- retorna una lista con los elementos que resultaron al dividir la cadena, si no se especifica elimina enter, tabs, espacios. ej:
url= "www.facebook.com"
datos= url.split(".")
print(datos9  -->   ["www",  "facebook"  "com" ]
6.3) str1.join(list).- retorna un str con los elementos de la lista unidos por el str1. ej:
lista= ["iphone", "11", "pro", "muy caro"]
cadena= " - " .join(lista)
print(cadena)  -->  iphone - 11 - pro - muy caro
6.4) sum(list).- retorna un int o float que representa la suma de los elementos numéricos de la lista, ej:
lisNum= [1, 2, 3.5, 4]
total= sum(lisNum)
print(total)   -->   10.5
6.5) list.append(elemento).- no retorna, guarda el elemento al final de list. ej:
lista= ["canciones","románticas" ]
list.append("ingles")
print(lista)  -->  ["canciones", "románticas" , "ingles"]
6.6) max(lis).- retorna un elemento(valor máximo) de la lista.
6.7) min(lis).- retorna un elemento(valor mínimo) de la lista.
6.8) list.insert(int1, elemento).- inserta en list un elemento en la posición int1
6.9) list1.extend(list2).- no retorna, solo une(concatena) list2 a list1, se imprime list1.
6.10) list.por(int).- .devuelve y elimina el elemento del índice int de list. ej:
lista= ["mouse", "teclado", "monitos"]
hardware= lista.pop(1)
print(lista)   -->   ["mouse",  "monitos"]
print(hardware)   -->  "teclado"
(si no se especifica el la posición int, elimina y guarda el ultimo de la lista)
6.11) list.reverse( ).- no retorna, invierte el orden de la lista
6.12) list.index(elemento).- retorna el int donde se encuentra elemento.
6.13) list.sort( ).- no retorna, ordena la lista de menor a mayor, según la letra inicial o números.
6.14) list.sort(reverse=True).- no retorna, ordena la lista de mayor a menor, según la letra inicial o números.

# data[].attributes.body
Para importar la librería en nuestro archivo debemos activarla:
import random as rd, antes de cada función se debe poner el alias "rd que le dimos.
Lo mas recomendado es:
from random import * así no es necesario escribir "rd".

7.1) randint(int1, int2).- retorna un entero aleatorio entre los limites, incluyendo ambos, ej:
n= randint(1,6)
print(n)   -->   5
7.2) randrange(int1, int2).- retorna un int entre los limites, sin incluir el segundo extremo, ej:
n= randrange(1, 7)
print(n)   -->  4
7.3) random( ) .- retorna un decimal entre 0 y 1 sin incluir el 1, ej:
n= random( )
print(n)   -->   0.5
7.4) choice(str1) .- retorna un carácter aleatorio de str1, ej:
carácter=choice("programación")
print(carácter)   -->   m
7.5) choice(list1).- retorna un elemento aleatorio de list1, ej:
objetos= ["mesa", "lápiz", "notas", "silla"]
elem= choice(objetos)
print(elem)   -->   "lápiz"
7.6) sample(list1, int1) .- retorna una lista con cantidad int1 elegidos al azar de list1. ej:
objetos= ["mesa", "lápiz", "notas", "silla"]
lisAzar= sample(objetos, 2)
print(lisAzar)   -->   ["mesa",  "silla"]
(en lugar de una lista también se puede usar un str)
7.7) shuffle(list1).- no retorna, mezcla aleatoriamente los elementos de list1.

# data[].attributes.headline
Sentencias condicionales; if,  elif,  else

# data[].attributes.subject
Sentencias condicionales; if,  elif,  else

# data[].attributes.body
Son estructuras de control que se ejecutan cuando se cumple la condición que retorne True o False

# data[].attributes.body
Estructura de control que repite sentencias un numero determinado de veces, Ej:
for variable in elemento iterable( puede ser: lista, cadena range(int) ):
sentencia1
sentencia2
sentencia n

# data[].attributes.body
Estructura de control iterativa o de repetición, sigue repitiéndose mientras se siga cumpliendo la condición, ej:
while condición= True:
sentencia 1
sentencia 2
sentencia n

# data[].attributes.body
Podemos crear nuestras propias funciones y almacenarlos en nuestra propia librería( archivo donde estén escritas)
Una función es una porción de código que podemos utilizar cuantas veces queramos
def nombreFuncion (parametro1, parametro2, parametro3.... )
codigo1
codigo2
codigo3
código n
return variable principal