diff --git a/00Learn/cadenas.py b/00Learn/cadenas.py
new file mode 100644
index 0000000..7f6c675
--- /dev/null
+++ b/00Learn/cadenas.py
@@ -0,0 +1,19 @@
+# Podemos usar comillas dobles ("") o simples ('')
+# para definir cadenas
+mi_texto = '"Taller"' # Podemos usar las comillas de distinto tipo dentro
+                      # de la cadena sin que interfieran
+mi_texto2 = "de \"Python\"" # El \ actúa como "carácter de escape"
+                            # Hace que se ignore el carácter siguiente
+                            # para que no cierre comillas
+
+texto_unido = mi_texto + " " + mi_texto2
+print(texto_unido)
+
+texto_unido = mi_texto + "\n " + mi_texto2 #Salto de línea
+print(texto_unido)
+
+texto_unido = mi_texto + "\t " + mi_texto2 # Tabulación
+print(texto_unido)
+
+texto_unido = mi_texto + "\r " + mi_texto2 # Borra lo anterior
+print(texto_unido)
\ No newline at end of file
diff --git a/00Learn/entrada-salidas.py b/00Learn/entrada-salidas.py
new file mode 100644
index 0000000..c72c993
--- /dev/null
+++ b/00Learn/entrada-salidas.py
@@ -0,0 +1,16 @@
+#entrada
+cadena = input("Introduce una cadena: ");
+
+#salida
+print(cadena);
+
+print('----------------------');
+
+#como formatear texto y variables en un print
+nombre = "Marcos";
+apellidos = "Rivera Gavilan";
+correo = "reveragavilanmarcos@gmail.com"
+
+print("Hola me llamo " + nombre + " " + apellidos + " y mi correo es " + correo);
+print(f"Hola me llamo {nombre} {apellidos} y mi correo es {correo}");
+print("Hola me llamo {} {} y mi correo es {}".format(nombre, apellidos, correo));
\ No newline at end of file
diff --git a/00Learn/operadores-aritmeticos.py b/00Learn/operadores-aritmeticos.py
new file mode 100644
index 0000000..e45e48b
--- /dev/null
+++ b/00Learn/operadores-aritmeticos.py
@@ -0,0 +1,36 @@
+# Suma
+3 + 2  # = 5
+
+# Resta
+3 - 2  # = -1
+
+# Multiplicación
+3 * 2  # = 6
+
+# Exponenciación ("elevado a")
+3 ** 2  # = 9
+
+# División con decimales (a veces denominada "true division")
+3 / 2  # = 1.5
+
+# División entera (se ignora el resto de la división)
+3 // 2  # = 1
+
+# Módulo ("resto de dividir entre...")
+3 % 2  # = 1
+
+# Abreviaturas
+a = 1;
+b = 2;
+
+a += b  # Equivalente a "a = a + b"
+a -= b  # Equivalente a "a = a - b"
+a *= b  # Equivalente a "a = a * b"
+a /= b  # Equivalente a "a = a / b"
+a //= b  # Equivalente a "a = a // b"
+a %= b  # Equivalente a "a = a % b"
+
+# En python no tenemos los operadores ++ o --
+# Para incrementar tenemos que hacer uso de los anteriores
+a +=1
+a -=1
\ No newline at end of file
diff --git a/00Learn/operadores-logicos.py b/00Learn/operadores-logicos.py
new file mode 100644
index 0000000..ce05c91
--- /dev/null
+++ b/00Learn/operadores-logicos.py
@@ -0,0 +1,28 @@
+# ¿igual?
+3 == 2  # = False
+
+# ¿menor que?
+3 < 2  # = False
+
+# ¿mayor que?
+3 > 2  # = True
+
+# ¿menor o igual que?
+3 <= 3  # = True
+
+# ¿mayor o igual que?
+3 >= 2  # = True
+
+# ¿diferente?
+3 != 2  # = True
+
+# Negación lógica (invertir el valor booleano)
+not (3 != 2)  # = False
+
+# Conjunción lógica / operador AND
+# True si y solo si ambos operandos son True
+(3 > 2) and (3 != 0)  # = True
+
+# Disyunción lógica / operador OR
+# True si alguno de los operandos es True
+(3 < 2) or (3 != 0)  # = True
\ No newline at end of file
diff --git a/00Learn/tipos-de-datos.py b/00Learn/tipos-de-datos.py
new file mode 100644
index 0000000..cea6522
--- /dev/null
+++ b/00Learn/tipos-de-datos.py
@@ -0,0 +1,45 @@
+numero_entero = 1 #int
+print(type(numero_entero));
+
+cadena = "Hello World" #str
+print(type(cadena));
+
+booleano = True #bool
+print(type(booleano));
+
+coma_flotante = 3.14 #float
+print(type(coma_flotante));
+
+numero_complejo = 1j #complex
+print(type(numero_complejo));
+
+lista = [1, 3.3, "python"] #list es una lista de datos
+print(type(lista));
+
+tupla = (1,3.3, "python"); #tuple es una lista constante
+print(type(tupla));
+
+conjunto = {1, 3.3, "python"}; #set coleccion de datos unicos desordenada
+print(type(conjunto));
+
+diccionario = {1:"python", "key":3.3, 4.4:"a"} #dict coleccion de pares clave-valor, tambien denominado 'tabla-hash'
+print(type(diccionario));
+
+#Como recorrer una coleccion
+
+l = [numero_entero, cadena, booleano, coma_flotante, numero_complejo, lista, tupla, conjunto, diccionario]
+print('-------------');
+#podemos usar un indice j
+for j in range(len(l)):
+    elemento = l[j];
+    print(type(elemento))
+    
+#podemos recorrer directamente la lista
+for elemento in l:
+    print(type(elemento));
+        
+
+
+
+
+
diff --git a/Intermediate/000_dates.py b/Intermediate/000_dates.py
new file mode 100644
index 0000000..ce6b94f
--- /dev/null
+++ b/Intermediate/000_dates.py
@@ -0,0 +1,59 @@
+### Dates ###
+
+from datetime import datetime
+
+now = datetime.now()
+
+print(now)
+print(now.year)
+print(now.month)
+print(now.day)
+print(now.hour)
+print(now.minute)
+print(now.second)
+
+timestamp = now.timestamp()
+
+print (timestamp)
+
+
+
+def print_date(date):
+    print(date.year)
+    print(date.month)
+    print(date.day)
+    print(date.hour)
+    print(date.minute)
+    print(date.second)
+    print(date.timestamp())
+    
+print_date(now)
+
+year_2023 = datetime(2023,1,1)
+
+print_date(year_2023)
+
+from datetime import time
+
+current_time = time()
+
+print(current_time.hour)
+print(current_time.minute)
+print(current_time.second)
+    
+
+from datetime import date
+
+current_date = date(1993,1,8)
+print(current_date)
+print(current_date.year)
+print(current_date.month)
+print(current_date.day)
+
+from datetime import timedelta
+
+time_delta = timedelta()
+
+
+
+
