Cómo tomar el número válido y específico de entradas del usuario usando la comprensión de la lista a partir de la declaración dada a continuación en python [duplicado]

Ai=([int(x) for x in input().split()])   

Utilizando la declaración mencionada Quiero hacer una lista de la entrada de cadena del usuario.

Quiero limitar el número de entradas que hace el usuario. Supongamos que el uso da una entrada con 5 números separados por espacio en blanco. Después de dividir obtengo 5 números diferentes pero quería restringir la entrada a sólo 4 números. ¿Cómo logro esto utilizando la declaración mencionada? Si no entonces, ¿cómo tomo diferentes entradas numerales (suppose 4) en una sola línea en pitón?

Pregunta hecha hace 3 años, 5 meses, 1 días - Por htmlhero


3 Respuestas:

  • Tienes múltiples opciones para hacerlo. Si lo haces así: Ai = ([int(x) for x in input().split()[:4]]) solo tomará los primeros 4 números de su entrada, incluso si el usuario escribe más números. Sin embargo, esto le dará un error si el usuario escribe en menos de 4 números. Además, si el usuario escribe algo más que los números, la conversión int le dará un error.

    Una mejor manera de hacer esto sería validar la entrada antes de la comprensión de la lista usando regex y sólo aceptarlo si es compatible con su formato deseado. Este patrón coincide con cualquier cadena que contenga entre 1 y 4 números seperados por espacios, pero no coincidirá con las picaduras con más de 4 números o con letras.

    Este código le pedirá entrada al usuario en un bucle infinito y comprobará si la entrada del usuario coincide con el formato que desea. Si no, pide de nuevo entrada. Si se encuentra un partido, el bucle termina y la comprensión de la lista se ejecuta.

    import re
    
    pattern = re.compile(r'^(?: ?\d+ ?){1,4}$')
    
    while True:
        user_input = input('Please enter up to four numbers seperated by spaces: ')
        if pattern.search(user_input):
            break
        else:
            print('Invalid input, try again!')
    
    Ai = ([int(x) for x in user_input.split()])
    

    Respondida el Dec 16, 2020 a las 11:37 - por codejuggernaut

    Votos positivos: 0 | Votos negativos: 0

  • Para limitar el número de entradas que el usuario puede dar utilizando la comprensión de lista y la declaración dada, puedes utilizar un rango específico en la comprensión de lista. Aquí te muestro cómo hacerlo:

    python
    inputs = [int(x) for x in input().split()][:4]
    

    En este caso, [int(x) for x in input().split()] crea una lista de números a partir de la entrada del usuario, y [:4] limita la lista resultante a solo los primeros 4 elementos.

    De esta manera, con esta línea de código puedes tomar solo 4 números de entrada del usuario en una sola línea.

    Respondida el Dec 17, 2020 a las 11:36 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Puedes utilizar la función len() para comprobar el número de entradas y limitarlas a 4:

    python
    Ai = [int(x) for x in input().split() if len(Ai) < 4]
    

    Esto creará una lista Ai con los primeros 4 números enteros de la entrada del usuario, ignorando cualquier entrada adicional.

    Si quieres tomar diferentes entradas numéricas en una sola línea en Python, puedes usar la función map():

    python
    Ai = list(map(int, input().split()))
    

    Esto creará una lista Ai con todos los números enteros de la entrada del usuario, convirtiéndolos a enteros utilizando la función int() sobre la marcha.

    Respondida el Dec 17, 2020 a las 11:44 - por Gemini

    Votos positivos: 0 | Votos negativos: 0