Prompt que usé para poner a chatGPT en modo tutor 🤓
<h1>Nociones Básicas</h1>💡 Eres un experto en Programación con el lenguaje Pyhton. Tu tarea será ayudarme a aprender dicho lenguaje de programación, desde lo básico hasta lo más avanzado. Serás mi tutor a cargo. Todas las dudas que tenga deberás responderlas de manera clara. Deberás darme problemas de programación, cuando te lo solicite, para practicar y consolidar el aprendizaje.
print("Esto es una cadena de texto en python")
#tambien podemos imprimir resultados de operaciones
print(3+4)
print(3*4)
print(3/4)
print(3-4)
#Para escribir un comentario de varias lineas se usa triple comilla doble"""
Esto es un comentario de varias lineas
jeje
jeje
jeje
"""
💡 Python no tiene ningún comando para declarar una variable.
Una variable se crea en el momento en que se le asigna un valor por primera vez.
No es necesario declarar el tipo de dato de una variable en Pyhton. Este se determina automáticamente al asignarle un valor. Ademas, una variable puede ir cambiando su tipo de dato durante la ejecución del código.
Los nombres de las variables distinguen entre mayúsculas y minúsculas.
a = 4
A = “Sally”
#A will not overwrite a
Una variable puede tener un nombre corto (como x e y) o un nombre más descriptivo (age, carname, total_volume). Las reglas para las variables en Python son:
El nombre de una variable debe comenzar con una letra o _.
El nombre de una variable NO puede empezar con un numero.
El nombre de una variable sólo puede contener caracteres alfanuméricos y guiones bajos
(A-z, 0-9, and _ ).
Los nombres de variables distinguen entre mayúsculas y minúsculas (age, Age and AGE son tres diferentes variables)
El nombre de una variable no puede ser una palabra reservada del lenguaje Python.
Legal variable names:
myvar = “John”
my_var = “John”
_my_var = “John”
myVar = “John”
MYVAR = “John”
myvar2 = “John”
Illegal variable names:
2myvar = “John”
my-var = “John”
my var = “John”
Los nombres de variables con más de una palabra pueden resultar difíciles de leer.
Hay varias técnicas que puede utilizar para hacerlos más legibles:
Camel Case
Cada palabra, excepto la primera, comienza con mayúscula:
myVariableName = “John”
Pascal Case
Cada palabra comienza con una letra mayúscula:
MyVariableName = “John”
Snake case
Cada palabra está separada por un carácter de subrayado:
my_variable_name = “John”
# Ejemplo de variables
nombre = "Juan"
edad = 25
altura = 1.75
es_estudiante = True# Mostrar valores en la consola
print("Nombre:", nombre)
print("Edad:", edad)
print("Altura:", altura)
print("¿Es estudiante?", es_estudiante)
Cuando trabajas con valores de tipo flotante en Python, es importante tener en cuenta que los números de punto flotante pueden tener representaciones aproximadas debido a la limitación de la precisión en la aritmética de punto flotante. Por lo tanto, comparar dos números de punto flotante directamente con el operador de igualdad (==
) puede no ser siempre preciso debido a errores de redondeo.
Para realizar comparaciones entre valores flotantes, generalmente se utiliza una tolerancia o margen de error. Aquí hay un ejemplo de cómo podrías comparar dos valores de punto flotante con una tolerancia:
# Definir una tolerancia
tolerancia = 1e-9# Puedes ajustar esto según la precisión que necesites#Tambien podemos poner la tolerancia como tolerancia = 0.0001 por ejemplo.# Ejemplos de valores flotantes
valor1 = 0.1 + 0.2
valor2 = 0.3# Comparación con toleranciaif abs(valor1 - valor2) < tolerancia:
print("Los valores son iguales dentro de la tolerancia.")
else:
print("Los valores no son iguales.")
En este ejemplo, abs(valor1 - valor2)
calcula la diferencia absoluta entre los dos valores flotantes, y se compara con una tolerancia (tolerancia
). Si la diferencia es menor que la tolerancia, se consideran iguales.
Espero que esto aclare cómo puedes comparar dos valores de tipo flotante en Python de manera más precisa. Si tienes más preguntas o si hay algo más en lo que pueda ayudarte, no dudes en preguntar.
# Operadores aritméticos
a = 5
b = 2
suma = a + b
resta = a - b
multiplicacion = a * b
division = a / b
modulo = a % b
# Operadores de comparación
igual = (a == b)
mayor_que = (a > b)
menor_que = (a < b)
# Operadores lógicos
and_logico = (TrueandFalse)
or_logico = (TrueorFalse)
not_logico = notTrue
# Estructura condicional (if-else)
edad = 18if edad >= 18:
print("Eres mayor de edad")
else:
print("Eres menor de edad")
# Bucle (for)for i in range(5):
print(i)
# Bucle (while)
contador = 0while contador < 5:
print(contador)
contador += 1
El casting de variables se refiere a la conversión de un tipo de dato a otro en programación. Python es un lenguaje de tipado dinámico, lo que significa que el tipo de una variable se infiere automáticamente en tiempo de ejecución. Sin embargo, en algunos casos, puedes querer convertir una variable de un tipo a otro de manera explícita. Aquí tienes algunos ejemplos de casting de variables en Python:
En muchos casos, Python realiza conversiones automáticamente si es posible sin pérdida de información. Esto se llama casting implícito.
# Casting implícito de entero a flotante
entero = 5
flotante = float(entero)
# Casting implícito de flotante a entero
flotante = 3.14
entero = int(flotante)
A veces, necesitas realizar la conversión de manera explícita usando funciones específicas.
# Casting explícito de cadena a entero
cadena_numero = "123"
numero = int(cadena_numero)
# Casting explícito de entero a cadena
numero = 456
cadena_numero = str(numero)
Puedes realizar conversiones entre diferentes tipos numéricos.
# Casting entre tipos numéricos
entero = 10
flotante = float(entero)
# Puedes convertir un flotante a entero, pero ten en cuenta que se perderá la parte decimal
flotante = 5.67
entero = int(flotante)
Los booleanos se pueden convertir a otros tipos y viceversa.
# Casting con booleanos
booleano = True
entero = int(booleano) # Se convierte True a 1, False a 0
numero = 0
booleano = bool(numero) # Se convierte 0 a False, cualquier otro número a True
Es importante tener en cuenta que algunas conversiones pueden perder información. Por ejemplo, al convertir un flotante a un entero, se pierde la parte decimal. Siempre debes estar atento a posibles pérdidas de datos al realizar castings.
El indexing (indexación) en Python se refiere a la forma en que accedes a elementos individuales en secuencias como cadenas, listas y tuplas. En Python, la indexación comienza desde 0, lo que significa que el primer elemento tiene un índice de 0, el segundo tiene un índice de 1, y así sucesivamente.
# Lista
mi_lista = [10, 20, 30, 40, 50]
# Acceder a elementos por índice
primer_elemento = mi_lista[0] # 10
segundo_elemento = mi_lista[1] # 20
ultimo_elemento = mi_lista[-1] # 50 (índice negativo cuenta desde el final)# Modificar elementos
mi_lista[2] = 35# Cambiar el tercer elemento a 35
# Cadena
mi_cadena = "Python"# Acceder a caracteres por índice
primer_caracter = mi_cadena[0] # 'P'
segundo_caracter = mi_cadena[1] # 'y'
ultimo_caracter = mi_cadena[-1] # 'n'# Las cadenas son inmutables, no puedes cambiar un carácter directamente# Pero puedes crear una nueva cadena con el cambio
nueva_cadena = mi_cadena[:2] + "a" + mi_cadena[3:]
En los diccionarios, se utilizan las claves para acceder a los valores.
# Diccionario
mi_diccionario = {"clave1": "valor1", "clave2": "valor2", "clave3": "valor3"}
# Acceder a valores por clave
valor_clave1 = mi_diccionario["clave1"]
valor_clave2 = mi_diccionario["clave2"]
Además de acceder a elementos individuales, puedes usar el slicing para obtener subconjuntos de elementos.
# Slicing en listas y tuplas
sublista = mi_lista[1:4] # [20, 30, 40]# Slicing en cadenas
subcadena = mi_cadena[1:4] # 'yth'# Slicing con paso
sublista_con_paso = mi_lista[::2] # [10, 30, 50]
Recuerda que el índice de inicio es inclusivo y el índice de final es exclusivo en el slicing.
Es importante poder controlar el formato de los números y fechas cuando trabajas con cadenas en Python. Aquí te proporcionaré ejemplos de cómo puedes especificar el formato para números y fechas.
numero_entero = 42# Formato de número entero con f-string
cadena_formateada = f"Número entero: {numero_entero:d}"
print(cadena_formateada)
En este caso, :d
indica que el valor es un número entero.
numero_decimal = 3.14159# Formato de número decimal con f-string
cadena_formateada = f"Número decimal: {numero_decimal:.2f}"
print(cadena_formateada)
En este caso, :.2f
indica que el valor es un número decimal y debe mostrarse con dos decimales.
numero_grande = 1000000# Formato con separadores de miles con f-string
cadena_formateada = f"Número grande: {numero_grande:,}"
print(cadena_formateada)
En este ejemplo, ,
se utiliza como separador de miles para hacer números grandes más legibles.
Python proporciona el módulo datetime
para trabajar con fechas. Aquí hay un ejemplo de cómo puedes formatear una fecha:
from datetime import datetime
fecha_actual = datetime.now()
# Formato de fecha con f-string
cadena_formateada = f"Fecha actual: {fecha_actual:%Y-%m-%d %H:%M:%S}"
print(cadena_formateada)
En este ejemplo, %Y-%m-%d %H:%M:%S
especifica el formato de la fecha como “Año-Mes-Día Hora:Minuto:Segundo”. Puedes ajustar este formato según tus necesidades.
Estos son solo algunos ejemplos básicos de cómo puedes especificar el formato de números y fechas en Python. Hay muchas más opciones y detalles que puedes explorar en la documentación oficial de Python.
Si tienes preguntas específicas sobre el formato de números o fechas, o si hay algo más en lo que pueda ayudarte, no dudes en preguntar.
Las listas son una estructura de datos en Python que te permite almacenar y organizar elementos. Puedes considerarlas como secuencias ordenadas. Aquí tienes una introducción a las listas y algunos de sus métodos más comunes:
# Crear una lista vacía
mi_lista = []
# Crear una lista con elementos
numeros = [1, 2, 3, 4, 5]
nombres = ["Ana", "Juan", "María"]
mezclada = [1, "dos", 3.0, True]
# Acceder a un elemento por índice
primer_elemento = numeros[0] # 1
segundo_elemento = nombres[1] # "Juan"
append()
:Añade un elemento al final de la lista.
numeros.append(6)
# Resultado: [1, 2, 3, 4, 5, 6]
extend()
:Extiende la lista añadiendo elementos de otra lista.
numeros.extend([7, 8, 9])
# Resultado: [1, 2, 3, 4, 5, 6, 7, 8, 9]
insert()
:Inserta un elemento en una posición específica.
numeros.insert(2, 10)
# Resultado: [1, 2, 10, 3, 4, 5, 6, 7, 8, 9]
remove()
:Elimina el primer elemento con un valor específico.
numeros.remove(3)
# Resultado: [1, 2, 10, 4, 5, 6, 7, 8, 9]
pop()
:Elimina y devuelve el elemento en una posición específica (por defecto, el último).
elemento_eliminado = numeros.pop(2)
# Resultado: [1, 2, 4, 5, 6, 7, 8, 9]# elemento_eliminado contiene el valor 10
index()
:Devuelve el índice del primer elemento con un valor específico.
indice = numeros.index(5)
# Resultado: 3 (índice del valor 5 en la lista)
count()
:Devuelve el número de ocurrencias de un elemento en la lista.
ocurrencias = numeros.count(4)
# Resultado: 1 (el valor 4 aparece una vez en la lista)
sort()
:Ordena la lista en orden ascendente (por defecto) o según una función personalizada.
numeros.sort()
# Resultado: [1, 2, 4, 5, 6, 7, 8, 9]
reverse()
:Invierte el orden de los elementos en la lista.
numeros.reverse()
# Resultado: [9, 8, 7, 6, 5, 4, 2, 1]
Estos son solo algunos de los métodos disponibles para listas en Python. Hay más métodos que puedes explorar según tus necesidades. Si tienes alguna pregunta específica sobre algún método o si hay algo más en lo que pueda ayudarte, no dudes en preguntar.
Los diccionarios son una estructura de datos en Python que permite almacenar pares clave-valor. Cada elemento en un diccionario consiste en una clave y su correspondiente valor asociado. A diferencia de las listas, los diccionarios no tienen un orden definido; accedes a los valores a través de sus claves en lugar de índices numéricos. Aquí tienes una introducción a los diccionarios y sus operaciones básicas:
# Crear un diccionario vacío
mi_diccionario = {}
# Crear un diccionario con elementos
persona = {"nombre": "Juan", "edad": 25, "ciudad": "México"}
nombre = persona["nombre"] # "Juan"
edad = persona["edad"] # 25
# Modificar el valor de una clave existente
persona["edad"] = 26# Añadir una nueva clave-valor
persona["ocupacion"] = "Programador"
keys()
, values()
, items()
:Estos métodos devuelven vistas de las claves, valores y pares clave-valor en el diccionario, respectivamente.
claves = persona.keys()
valores = persona.values()
pares = persona.items()
get()
:Devuelve el valor asociado a una clave o un valor predeterminado si la clave no está en el diccionario.
edad = persona.get("edad") # 26
profesion = persona.get("profesion", "Desconocido") # "Desconocido" (valor predeterminado)
pop()
:Elimina y devuelve el valor asociado a una clave.
ciudad = persona.pop("ciudad") # "México"# La clave "ciudad" y su valor han sido eliminados del diccionario
update()
:Actualiza el diccionario con pares clave-valor de otro diccionario o de una secuencia de pares clave-valor.
nuevos_valores = {"edad": 27, "profesion": "Ingeniero"}
persona.update(nuevos_valores)
# Resultado: {"nombre": "Juan", "edad": 27, "profesion": "Ingeniero"}
clear()
:Elimina todos los elementos del diccionario.
persona.clear()
# Resultado: {}
El bucle for
en Python se utiliza para iterar sobre una secuencia (como una lista, tupla, cadena o rango) o cualquier objeto iterable. La estructura básica de un bucle for
es la siguiente:
for variable in secuencia:
# Cuerpo del bucle# Este bloque de código se ejecutará para cada elemento de la secuencia# Utiliza la variable para acceder al elemento actual# ... (código dentro del bucle)
variable
: Es una variable que toma el valor de cada elemento en la secuencia en cada iteración del bucle.secuencia
: Es la secuencia de elementos sobre la cual iterará el bucle. Puede ser una lista, tupla, cadena, rango u otro objeto iterable.Aquí tienes algunos ejemplos de bucles for
:
numeros = [1, 2, 3, 4, 5]
for numero in numeros:
print(numero)
En este ejemplo, el bucle for
itera sobre la lista numeros
, y en cada iteración, la variable numero
toma el valor del siguiente elemento en la lista, imprimiendo cada número en la consola.
palabra = "Python"for letra in palabra:
print(letra)
En este caso, el bucle for
itera sobre la cadena "Python"
, y en cada iteración, la variable letra
toma el valor de cada carácter de la cadena, imprimiéndolos uno por uno.
for i in range(5):
print(i)
Aquí, el bucle for
utiliza la función range()
para generar una secuencia de números del 0 al 4 (la función range(5)
genera números desde 0 hasta 4), e imprime cada número en la consola.
Si necesitas también acceder a los índices de los elementos durante la iteración, puedes utilizar la función enumerate()
:
nombres = ["Ana", "Juan", "María"]
for indice, nombre in enumerate(nombres):
print(f"Índice: {indice}, Nombre: {nombre}")
Esto imprimirá tanto el índice como el nombre en cada iteración.
Recuerda que la indentación (sangría) es crucial en Python para definir el alcance del bucle. El código dentro del bucle debe tener la misma sangría para ser considerado parte del bucle for
.
El bucle while
en Python se utiliza para ejecutar un bloque de código repetidamente mientras una condición sea verdadera. La estructura básica de un bucle while
es la siguiente:
while condicion:
# Cuerpo del bucle# Este bloque de código se ejecutará mientras la condición sea verdadera# ... (código dentro del bucle)# Asegúrate de que la condición cambie para evitar un bucle infinito
condicion
: Es la expresión booleana que se evalúa antes de cada iteración. Mientras la condición sea True
, el bucle continuará ejecutándose.Aquí tienes un ejemplo básico de un bucle while
:
contador = 0while contador < 5:
print(contador)
contador += 1
Este bucle imprimirá los números del 0 al 4. La condición contador < 5
se evalúa antes de cada iteración, y el bucle se ejecuta mientras la condición sea verdadera. Es importante tener una manera de modificar la condición dentro del bucle para evitar un bucle infinito.
break
y continue
:El bucle while
también puede incluir las palabras clave break
y continue
para controlar el flujo de ejecución.
break
:Se utiliza para salir del bucle inmediatamente, sin esperar a que la condición sea falsa.
contador = 0whileTrue:
print(contador)
contador += 1if contador >= 5:
break
Este ejemplo imprimirá los números del 0 al 4 y luego saldrá del bucle cuando contador
sea mayor o igual a 5.
continue
:Se utiliza para pasar a la siguiente iteración del bucle, omitiendo el código restante dentro del bucle para la iteración actual.
contador = 0while contador < 5:
contador += 1if contador == 3:
continue
print(contador)
En este ejemplo, se imprimirán los números del 1 al 5, pero se omitirá la impresión de 3 debido a la instrucción continue
.
Recuerda que, al igual que con el bucle for
, la indentación (sangría) es crucial en Python para definir el alcance del bucle while
.
Los bucles anidados en programación se refieren a la inclusión de un bucle dentro de otro. Esto significa que un bucle está contenido dentro de otro bucle. Los ciclos anidados son útiles cuando necesitas repetir una operación varias veces y, dentro de cada iteración, realizar otra serie de operaciones repetidas. Los bucles anidados se pueden utilizar en situaciones como la exploración de matrices bidimensionales, la generación de combinaciones o permutaciones, entre otros escenarios.
La estructura general de los ciclos anidados se ve así:
for variable_externa in secuencia_externa:
# Código externofor variable_interna in secuencia_interna:
# Código interno# Utiliza variable_externa e variable_interna según sea necesario
Aquí hay un ejemplo simple de ciclos anidados que imprime una tabla de multiplicar:
for i in range(1, 6):
for j in range(1, 11):
resultado = i * j
print(f"{i} * {j} = {resultado}")
En este ejemplo, el bucle externo itera sobre los números del 1 al 5, y dentro de cada iteración del bucle externo, el bucle interno itera sobre los números del 1 al 10. Esto imprime la tabla de multiplicar del 1 al 5.
Otro ejemplo común es recorrer una matriz bidimensional (una lista de listas):
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
for fila in matriz:
for elemento in fila:
print(elemento, end=" ")
print() # Salto de línea entre filas
Este código imprimirá la matriz en formato de cuadrícula.
Escribe un programa que calcule la suma de los números pares del 1 al 50.
Utilizando un bucle for
, imprime los números del 10 al 1 en orden descendente.
Escribe un programa que solicite al usuario un número e imprima la tabla de multiplicar de ese número del 1 al 10.
Escribe un programa que cuente el número de vocales en una palabra ingresada por el usuario.
Crea una función que tome un número n
como argumento y devuelva una matriz de identidad de tamaño n x n
.
Escribe un programa que imprima los números primos del 1 al 20.
Crea una función que tome una matriz cuadrada como argumento y devuelva la suma de sus diagonales.
Escribe un programa que verifique si una palabra ingresada por el usuario es un palíndromo (se lee igual de izquierda a derecha que de derecha a izquierda).
Crea una lista que contenga los cuadrados de los números del 1 al 10 utilizando un bucle for
.
Escribe un programa que solicite al usuario un número e imprima su factorial.
Recuerda tomar en cuenta la estructura de control de flujo, las listas, las cadenas, los bucles, y cualquier otro concepto que hayamos cubierto. ¡Buena suerte!