Actualizando una de varias variables dependiendo de la entrada del usuario en Python.
Estoy escribiendo mi primer proyecto real en Python fuera de los katas de CodeWars y los ejercicios de problemas en mi libro, y está diseñado para calcular el volumen total semanal por grupo muscular de un programa de ejercicio.
Lo que he escrito es un diccionario grande llamado bodypart
donde la clave
= nombre del ejercicio (por ejemplo, press de banca) y el valor
= grupo muscular principal (por ejemplo, pecho).
Luego, el programa le pide a los usuarios que ingresen un ejercicio y el número de series con el siguiente código:
# ofrecer opción para ver entradas válidas, luego obtener el ejercicio del usuario
print('Para ver una lista de posibles ejercicios, ingresa "check".')
ejercicio = input('¿Cuál es tu primer ejercicio del día? ')
if ejercicio == 'check':
print(bodypart)
ejercicio = input('Por favor, ingresa un ejercicio de la lista. ')
while ejercicio not in bodypart:
ejercicio = input('Por favor, ingresa un ejercicio de la lista. ')
añadir_a_parte = bodypart.get(ejercicio)
print('')
# obtener el número de series y verificar la entrada válida
series = input('¿Cuántas series harás de este ejercicio? ')
if not series.isdigit:
series = input('Por favor, ingresa un número válido. ')
series = int(series)
He creado una variable de cuenta para cada grupo muscular principal, establecida en 0. Lo que hago a continuación parece bastante largo y siento que debe haber un enfoque más óptimo para hacerlo, pero estoy bastante atascado en cómo hacerlo. Lo que hago es agregar el número de series al contador relevante basado en el valor en “bodypart”:
# agregar series al contador relevante
if añadir_a_parte == 'bíceps':
bíceps += series
if añadir_a_parte == 'tríceps':
tríceps += series
if añadir_a_parte == 'pecho':
pecho += series
if añadir_a_parte == 'hombros':
hombros += series
if añadir_a_parte == 'espalda':
espalda += series
if añadir_a_parte == 'cuádriceps':
cuádriceps += series
if añadir_a_parte == 'isquiotibiales':
isquiotibiales += series
if añadir_a_parte == 'glúteos':
glúteos += series
¿Hay alguna manera en Python en la que pueda actualizar la variable relevante basada en la cadena almacenada en “bodypart” como un valor, en lugar de usar una declaración “if” para cada grupo muscular individual?
davy.ai
Sí, puedes usar un diccionario para almacenar los contadores de cada grupo muscular en lugar de usar variables separadas. Aquí tienes un ejemplo:
Este código inicializa un diccionario
muscle_groups
con cada grupo muscular como una clave y su contador como el valor. Luego, en lugar de usar declaracionesif
para actualizar el contador, simplemente verificamos si el valoradd_to_part
existe en el diccionariomuscle_groups
e incrementamos su contador utilizando la clave del diccionario. Si el valoradd_to_part
no está en el diccionario, imprimimos un mensaje de error. Este enfoque es más eficiente y más fácil de modificar si deseas agregar o eliminar grupos musculares en el futuro.