Input, Output y Variables
Enunciado:
1. Pide al usuario que introduzca su nombre y su altura en centímetros.
2. Imprime un mensaje en el siguiente formato:
"Hola [nombre], mides [altura] cm"
3. Convierte la altura a metros (1 metro = 100 cm) y vuelve a imprimir un mensaje en el siguiente
formato:
"Hola [nombre], mides [altura_en_metros] metros"
def ejercicio1():
nombre = input("Ingrese su nombre: ")
altura_cm = input("Ingrese su altura: ")
print(f"Hola {nombre}, mides {altura_cm} cm")
try:
altura_cm_float = float(altura_cm)
altura_m = altura_cm_float / 100
print(f"Hola {nombre}, mides {altura_m} metros")
except ValueError:
print("El valor introducido no es válido")
if __name__ == "__main__":
ejercicio1()
Calculadora
Enunciado:
1.Crea un programa que pida al usuario dos números enteros.
2.Muestra la multiplicación y la división entre ellos.
3.Si el divisor (segundo número) es 0, muestra un mensaje que indique que la división no
es posible.
def ejercicio2():
num1 = input("Introduce el primer número: ")
num2 = input("Introduce el segundo número: ")
try:
num1 = int(num1)
num2 = int(num2)
# Multiplicación (siempre válida)
print(f"Multiplicación: {num1} * {num2} = {num1 * num2}")
# División (solo si num2 no es cero)
if num2 == 0:
print("No se puede dividir entre 0")
else:
print(f"División: {num1} / {num2} = {num1 / num2}")
except ValueError:
print("Error: Los valores introducidos no son válidos")
if __name__ == "__main__":
ejercicio2()
Condicionales (if, elif, else)
Enunciado:
1.Pide al usuario que introduzca una nota en una escala de 0 a 10.
2.Según la nota, muestra:
- Menor que 5: "Suspendido"
- Entre 5 y 6 (inclusive 5 y menor o igual a 6): "Aprobado"
- Entre 7 y 8: "Notable"
- Mayor que 8 hasta 10: "Sobresaliente".
3.Si la nota es menor que 0 o mayor que 10, muestra un mensaje indicando que la nota
está fuera de rango.
def ejercicio3():
nota = input("Introduce una nota del 0 al 10: ")
try:
nota = float(nota) # Usamos float para admitir decimales
if nota < 0 or nota > 10:
print("Error, nota fuera de rango")
elif nota < 5:
print("Suspendido")
elif nota < 7: # Ya sabemos que es >= 5 por el elif anterior
print("Aprobado")
elif nota < 9: # Ya sabemos que es >= 7
print("Notable")
else: # Solo queda >= 8 y <= 10 (por el primer if)
print("Sobresaliente")
except ValueError:
print("Error, introduce un número válido")
if __name__ == "__main__":
ejercicio3()
Bucles FOR
Enunciado:
1.Crea una lista de 5 números, por ejemplo: [5, 2, 7, 1, 9].
2.Utilizando un bucle for, recorre la lista y calcula la suma total de los elementos.
3.Imprime el resultado de la suma.
def ejercicio4():
numeros = [5,2,7,1,9]
suma = 0
for num in numeros:
suma += num
print(f"La suma total de los numeros es de: {suma}")
if __name__ == "__main__":
ejercicio4()
Bucles WHILE
Enunciado:
1.Utiliza un bucle while para pedir al usuario que introduzca números.
2.El programa deberá seguir pidiendo números mientras el número ingresado sea mayor o
igual a cero.
3.Cuando el usuario introduzca un número negativo, el programa finaliza y muestra todos
los números introducidos (puedes mostrarlos en una lista).
def ejercicio5():
numeros_ingresados = []
try:
numero = int(input("Introduce un numero(para finalizar ingresa un numero negativo:"))
while numero >= 0:
numeros_ingresados.append(numero)
numero = int(input("Introduce un numero(para finalizar ingresa un numero negativo:"))
except ValueError:
print("No se puede introducir algo que no sea un número")
print(f"Números ingresados: {numeros_ingresados}")
if __name__ == "__main__":
ejercicio5()
Funciones, Variables Locales y Globales
Enunciado:
1.Define una función llamada cuadrado que reciba un número y retorne el cuadrado de
ese número. Utiliza una variable local en la función.
2.Declara una variable global llamada mensaje_global y escribe otra función que la
modifique.
3.Muestra por pantalla el resultado de la función cuadrado y el valor de la variable global
tras la modificación.
def cuadrado(num):
resultado_local = num * num #variable local
return resultado_local
# Variable global
mensaje_global = "Valor inicial"
def modificar_mensaje():
global mensaje_global
mensaje_global = "El mensaje ha sido modificado desde la funcion"
def ejercicio6():
numero = 4
print(f"El cuadrado de {numero} es : {cuadrado(numero)}")
print(f"Antes de modificar: {mensaje_global}")
modificar_mensaje()
print(f"Despues de modificar: {mensaje_global}")
if __name__ == "__main__":
ejercicio6()
Funciones Lambda
Enunciado:
1.Define una función lambda que reciba un número y lo multiplique por 10.
2.Aplica esa lambda a cada elemento de la lista [1, 2, 3, 4, 5] para generar una nueva lista.
3.Imprime la nueva lista resultante.
def ejercicio7():
multiplicar_por_diez = lambda x : x*10
numeros = [1,2,3,4,5]
nuevos_numeros = list(map(multiplicar_por_diez, numeros))
print(f"Lista original: {numeros}")
print(f"Lista multiplicada por 10: {nuevos_numeros}")
if __name__ == "__main__":
ejercicio7()
Recursividad (Factorial)
Enunciado:
1.Define una función recursiva factorial(n) que calcule y retorne el factorial del número n.
2.Recuerda que el factorial de 0 es 1 y para n > 0, se cumple que:
factorial(n) = n * factorial(n - 1).
3.Demuestra el funcionamiento de la función llamándola, por ejemplo, con n = 5.
def ejercicio8():
def factorial(n):
# Caso base: factorial de 0 es 1
if n == 0:
return 1
# Caso recursivo: n * factorial(n-1)
else:
return n * factorial(n - 1)
# Demostración del funcionamiento con n = 5
resultado = factorial(5)
print("El factorial de 5 es:", resultado)
if __name__ == "__main__":
ejercicio8()
Manejo de Errores (try/except)
Enunciado:
1.Pide al usuario que introduzca un número entero.
2.Divide 10 entre ese número.
3.Utiliza bloques try/except para manejar:
- El error al convertir el dato a entero.
- El error de división por cero..
4.Asegúrate de incluir un bloque finally que imprima un mensaje final, indicando que se
ha finalizado la operación.
def ejercicio9():
try:
entrada = input("Introduce un numero entero:")
numero = int(entrada)
resultado = 10 / numero
print(f"10 dividido entre {numero} es {resultado}")
except ZeroDivisionError:
print("Error: No se puede dividir entre 0.")
except ValueError:
print("Error: Debes introducir un numero entero valido.")
finally:
print("Fin del bloque try/except")
if __name__ == "__main__":
ejercicio9()
Reto 4
Enunciado:
Se debe crear una clase llamada soldado, la cual debe tener un constructor con 3 atributos
(peso, altura y fuerza), todos ellos con valores numéricos enteros (int). El valor de fuerza se
debe inicializar con el valor 100.
Posteriormente se crearan 2 métodos:
Con esta clase debemos crear un objeto soldado y simular la pérdida o ganancia de fuerza como si estuviera en un video juego y fuese herido o cogiese un objeto de energía. El ejemplo será válido con la creación del objeto, una pérdida de fuerza y una ganancia
class Soldado:
def __init__(self, peso, altura, fuerza=100):
self.peso = int(peso)
self.altura = int(altura)
self.fuerza = int(fuerza) # Corregido para usar el parámetro
def perdida(self, fuerza):
self.fuerza -= int(fuerza)
if self.fuerza <= 0:
self.fuerza = 0
print("El soldado ha muerto. Fin del juego.")
def ganancia(self, fuerza):
self.fuerza = min(100, self.fuerza + int(fuerza))
Soldado1 = Soldado(100, 180)
print("El soldado inicia la partida con: "+str(Soldado1.fuerza)+" de fuerza")
Soldado1.perdida(10)
print("El soldado ha sido herido. Fuerza actual: "+str(Soldado1.fuerza))
Soldado1.ganancia(30)
print("El soldado gana energia. Fuerza actual: "+str(Soldado1.fuerza))
Soldado1.perdida(100)
Comandos Git
git init:Inicializa un nuevo repositorio git local | git clone < url>:Descarga un repositorio remoto a local | git status:Muestra el estado de los archivos | git add < archivo>:Añade cambios a ese archivo |
git commit -m "":Guarda los cambios con el mensaje | git push:Sube los commits al repositorio remoto | git pull:Descarga los últimos cambios del repositorio remoto y los fusiona con el local | git branch:Lista todas las ramas del repositorio |
git branch < nombre>:Crea una nueva rama | git branch -d < nombre>:Elimina la rama | git checkout < rama>:Cambia a otra rama | git merge < rama>:Fusiona una rama con la rama actual |
git diff:Muestra las diferencias entre archivos modificados y su última versión guardada | git remote -v:Muestra los repositorios remotos configurados | git reset < archivo>:Quita un archivo del área de staging | git rm < archivo>:Elimina un archivo del repositorio y del sistema de archivos |
git fetch:Descarga cambios del repositorio remoto sin fusionarlos | git remote add < repo_name> < remote_url>:Crea una conexión entre el repositorio local y el remoto | git push --force origin main:Sobrescribe y empuja todo el local al remoto | git log:Muestra el historial de commits |
git clean:Elimina los archivos sin seguimiento del respositorio | git config:Configura las opciones de git |
Primeros pasos:
import streamlit as st
import time
#---CONFIGURACION INICIAL DE LA PAGINA---
st.set_page_config(page_title="Demo de streamlit", page_icon=":)", layout="wide")
#---ESCRITURA---
st.title("Demo completa de los componentes de streamlit")
st.header("Explorando los elementos básicos")
#---ELEMENTOS DE TEXTO---
st.subheader("Texto enriquecido")
st.text("Esto es un texto simple")
st.markdown("**Este texto esta en negrita** y este en ***cursiva***")
st.code("print('Hola mundo')", language="python")
#---WIDGETS----
st.subheader("Widgets iterativos")
if st.button("Haz click aqui:"):
st.success("¡Boton presionado!")
opcion = st.selectbox("Selecciona una opcion", ["A", "B", "C"])
st.write(f"Seleccionaste: {opcion}")
ingredientes = st.multiselect(
"Selecciona tus ingredientes preferidos",
["Avena", "Huevo", "Pollo", "Verduras"]
)
st.write(f"Seleccionaste: {ingredientes}")
#---SLIDER---
st.subheader("Slider")
valor = st.slider("Selecciona un valor", 0, 100, 25)
st.write(f"Valor seleccionado: {valor}")
#---INPUT----
st.subheader("Inputs")
nombre = st.text_input("¿Como te llamas?")
edad = st.text_input("¿Que edad tienes?")
edad2 = st.number_input("¿Cual es tu edad?", min_value=1, max_value=120, step=1)
st.write(f"Nombre: {nombre}, edad: {edad2}")
#---ELEMENTOS MULTIMEDIA----
st.subheader("Elementos multimedia")
st.image("https://via.placeholder.com/300x150.png?text=Imagen+de+ejemplo", caption="Imagen de la web")
st.audio("https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3")
st.video("https://www.w3schools.com/html/mov_bbb.mp4")
#---ESTADOS---
st.subheader("Estados")
if "contador" not in st.session_state:
st.session_state.contador = 0
incrementar = st.button("Incrementar contador")
if incrementar:
st.session_state.contador += 1
st.write(f"Contador: {st.session_state.contador}")
#---BARRA DE PROGRESO---
st.subheader("Barra de progreso")
progreso = st.progress(0)
for porcentaje in range(0,100,10):
time.sleep(0.5)
progreso.progress(porcentaje)
#---DISEÑO Y CONTENEDORES---
st.subheader("Diseños y contenedores")
col1, col2 = st.columns(2)
with col1:
st.info("Esta es la columna 1")
with col2:
st.warning("Esta es la columna 2")
with st.expander("Haz click para expandir"):
st.write("Aquí puedes ocultar o mostrar contenido")
col3, col4 = st.columns(2)
with col3:
st.info("Esta es la columna 1")
with col4:
st.warning("Esta es la columna 2")
Comandos Streamlit
st.tittle:Crea un título | st.header:Un cabecero o h2 | st.subheader:h3 aprox | st.text:como un p |
st.markdown:Escribe texto markdown | st.code:Muestra el codigo | st.button:Crea un botón | st.succes:Mensaje de exito en verde |
st.selectbox:Selector opciones | st.multiselect:Selector múltiple | st.slider:Barra de medida roja | st.text_input:Introduce un texto |
st.number_input:Introduce un número | st.image:Introduce una imagen | st.audio:Introduce un audio | st.video:Introduce un video |
st.progress:Barra de progeso azul | st.columns:Crea columnas | st.info:Texto informativo azul | st.warning:Texto informativo amarillo |
st.error:Texto informativo rojo | st.expander:Barra expansora que se puede ocultar |