Standaardwaarden bij lege gebruikersinvoer

Hier moet ik de standaardwaarde instellen als de gebruiker de waarde vanaf het toetsenbord invoert. Hier is de code die de gebruiker kan invoeren:

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

Hier wordt de waarde toegewezen aan een variabele inputna het invoeren van de waarde en het indrukken van Enter. Is er een methode dat als we de waarde niet invoeren en direct op de Enter-toets drukken, de variabele direct wordt toegewezen aan een standaardwaarde, bijvoorbeeld als input = 0.025?


Antwoord 1, autoriteit 100%

Python 3:

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

Python 2:

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

Hoe werkt het?

Als er niets is ingevoerd, retourneert input/raw_inputeen lege tekenreeks. Lege string in Python is False, bool("") -> False. Operator orretourneert de eerste waarheidswaarde, in dit geval "42".

Dit is geen geavanceerde invoervalidatie, omdat de gebruiker alles kan invoeren, b.v. tien spatiesymbolen, wat dan Truezou zijn.


Antwoord 2, autoriteit 11%

Je kunt het als volgt doen:

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

Antwoord 3, autoriteit 9%

Een manier is:

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

Een andere manier kan zijn:

input = raw_input("Number: ") or 0.025

Hetzelfde geldt voor Python 3, maar met input():

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

Antwoord 4, autoriteit 6%

Je kunt daarvoor ook de clickbibliotheekgebruiken, die veel nuttige functionaliteit biedt voor opdrachtregelinterfaces:

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

Voorbeelden van invoer:

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

of

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

Antwoord 5, autoriteit 2%

De meeste van de bovenstaande antwoorden zijn correct, maar voor Python 3.7 kunt u het volgende doen om de standaardwaarde in te stellen.

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

Antwoord 6, autoriteit 2%

U kunt eerst een tekenreeks invoeren en vervolgens controleren op lengte nul en geldig nummer:

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

Antwoord 7

Hier is een voorbeeld om gebruikersinvoer te valideren als een getal en ook om de standaardwaarde in te stellen als hij niets invoert.

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))

Other episodes