es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , , ,

Answer

  1. Avatar for 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:

    muscle_groups = {
        'biceps': 0,
        'triceps': 0,
        'pecho': 0,
        'hombros': 0,
        'espalda': 0,
        'cuádriceps': 0,
        'isquiotibiales': 0,
        'glúteos': 0
    }
    
    add_to_part = bodypart.get(exercise)
    if add_to_part in muscle_groups:
        muscle_groups[add_to_part] += sets
    else:
        print('Grupo muscular no válido')
    

    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 declaraciones if para actualizar el contador, simplemente verificamos si el valor add_to_part existe en el diccionario muscle_groups e incrementamos su contador utilizando la clave del diccionario. Si el valor add_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.

Comments are closed.