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.

¿Existe una forma rápida en Python de obtener una respuesta de rango, si escribo 1, da “1-10” y así sucesivamente?

Estoy teniendo un problema en un script donde necesito cambiar un entero a una cadena que tenga un rango, como 1-10, 11-20 y así sucesivamente. El uso de simples if else en Python no es una buena opción para números más grandes. ¿Alguien sabe de alguna función que pueda ayudar con esto en Python?

Por ejemplo:
Estoy leyendo los números desde un dataframe de pandas, cada celda tiene números diferentes:
Así que si coloco el número en la función convertnumtorange(1), debería dar “1-10”.
Si coloco el número en la función convertnumtorange(27), debería dar “21-30”.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una función en python llamada “divmod” que se puede utilizar para realizar la tarea de convertir un número entero a un formato de rango. Aquí hay un ejemplo de código que puedes usar:

    def convertnumtorange(num):
        range_start = ((num - 1) // 10) * 10 + 1
        range_end = range_start + 9
        return f"{range_start}-{range_end}"
    
    # Ejemplo de uso
    print(convertnumtorange(1))   # Salida: 1-10
    print(convertnumtorange(27))  # Salida: 21-30
    

    Aquí, estamos usando la operación de división entera (//) para dividir el número dado por el valor de rango (que en este caso es 10), y luego multiplicándolo por el valor de rango para obtener el valor inicial del rango. Luego, le sumamos 9 a este valor para obtener el valor final del rango. Finalmente, estamos devolviendo la cadena formateada en el formato de rango requerido.

Comments are closed.