Valores predeterminados en la entrada de usuario vacía

4 minutos de lectura

avatar de usuario
kkkkk

Aquí tengo que establecer el valor predeterminado si el usuario ingresará el valor desde el teclado. Aquí está el código que el usuario puede ingresar valor:

input = int(raw_input("Enter the inputs : "))

Aquí el valor será asignado a una variable input después de ingresar el valor y presionar Ingresar. ¿Hay algún método que si no ingresamos el valor y presionamos directamente el Ingresar clave, la variable se asignará directamente a un valor predeterminado, digamos como input = 0.025?

  • … y eso fallará si el usuario simplemente presiona Enter

    – Paulo Bu

    14/03/2014 a las 10:35

  • input es una función integrada en Python, es posible que desee utilizar un nombre de variable diferente…

    – barak manos

    14/03/2014 a las 10:43

  • Relacionado pero no duplicado: ¿Cómo establecer una cadena predeterminada para raw_input?

    – georgia

    5 de julio de 2019 a las 12:09

avatar de usuario
aisba

Pitón 3:

input = int(input("Enter the inputs : ") or "42")

Pitón 2:

input = int(raw_input("Enter the inputs : ") or "42")

¿Como funciona?

Si no se ingresó nada entonces input/raw_input devuelve una cadena vacía. La cadena vacía en Python es False, bool("") -> False. Operador or devuelve el primer valor verdadero, que en este caso es "42".

Esta no es una validación de entrada sofisticada, porque el usuario puede ingresar cualquier cosa, por ejemplo, diez símbolos de espacio, que luego serían True.

  • ¿No es una mala práctica nombrar la variable como ‘entrada’?

    – Anchith Acharya

    4 de febrero de 2021 a las 13:24

  • Depende del contexto, si el mensaje dijera “ingrese cuántas manzanas tiene”, entonces sí input sería muy mal nombre.

    – aisbaa

    5 de febrero de 2021 a las 13:15

  • @AnchithAcharya, estaría de acuerdo en que es una mala práctica ya que input es una función incorporada y estaría reemplazando esa función con la salida de la declaración. En la práctica, puede que no sea un gran problema, pero si necesita pedir input nuevamente más adelante en la función, encontrará que no funciona como se esperaba como input ahora sería un int.

    – Escala Nimbus

    19 de marzo de 2021 a las 18:29


  • eres un salvavidas

    – BARIS KURT

    14 de noviembre de 2021 a las 20:48

avatar de usuario
piokuc

Puedes hacerlo así:

>>> try:
        input= int(raw_input("Enter the inputs : "))
    except ValueError:
        input = 0

Enter the inputs : 
>>> input
0
>>> 

  • Hay muchas razones para no usar excepciones para controlar el flujo.

    – kmf

    31 de mayo a las 12:25

avatar de usuario
anuragal

Una forma es:

default = 0.025
input = raw_input("Enter the inputs : ")
if not input:
   input = default

Otra forma puede ser:

input = raw_input("Number: ") or 0.025

Lo mismo se aplica para Python 3, pero usando input():

ip = input("Ip Address: ") or "127.0.0.1"

También puedes usar click biblioteca para eso, que proporciona muchas funciones útiles para las interfaces de línea de comandos:

import click

number = click.prompt("Enter the number", type=float, default=0.025)
print(number)

Ejemplos de entrada:

Enter the number [0.025]: 
 3  # Entered some number
3.0

o

Enter the number [0.025]: 
    # Pressed enter wihout any input
0.025

La mayoría de las respuestas anteriores son correctas, pero para Python 3.7, esto es lo que puede hacer para establecer el valor predeterminado.

user_input = input("is this ok ? - [default:yes] \n")
if len(user_input) == 0 :
    user_input = "yes"

  • Esta es la misma idea que en la respuesta de Ber. Además, es posible que desee cambiar “Python 3.7” solo por “Python 3” porque input estaba allí antes de eso también.

    – georgia

    5 de julio de 2019 a las 11:59

avatar de usuario
jayanth koushik

Primero puede ingresar una cadena, luego verificar la longitud cero y el número válido:

input_str = raw_input("Ender the number:")

if len(input_str) == 0:
    input_number = DEFAULT
else:
    try:
        input_number = int(input_str)
    except ValueError:
        # handle input error or assign default for invalid input

  • Esta es la misma idea que en la respuesta de Ber. Además, es posible que desee cambiar “Python 3.7” solo a “Python 3” porque input estaba allí antes de eso también.

    – georgia

    5 de julio de 2019 a las 11:59

avatar de usuario
ePandit

Aquí hay un ejemplo para validar la entrada del usuario para que sea un número y también establecer el valor predeterminado si no ingresa nada.

while True:
    luckyNo = input("Enter your lucky number - [default:108]: ").strip()
    if luckyNo.isdigit(): # check if user entered a number
        luckyNo = int(luckyNo) # convert entered number to integer
        break
    else:  
        if not luckyNo: # user entered nothing
            print("You entered nothing. Using default value...")
            luckyNo = 108 # set default value
            break
        else: # user entered something other than a number
            print("Wrong input!. Try again.")

print("Your lucky number is " + str(luckyNo))

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad