如何在Python中定义默认值,如果用户输入为空?

83

如果用户将从键盘输入值,我必须设置默认值。以下是用户可以输入值的代码:

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

在输入数值并按下Enter键后,该数值将被赋给名为input的变量。是否有一种方法,即使我们没有输入数值,直接按下Enter键,变量也会被直接赋一个默认值,比如说input = 0.025


1
...如果用户只是按下回车键,那么这将失败。 - Paulo Bu
"input" 是 Python 中的内置函数,你可能需要使用不同的变量名... - barak manos
相关但不是重复:如何为raw_input设置默认字符串? - Georgy
7个回答

169

Python 3:

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

Python 2:

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

它是如何工作的?
如果没有输入任何内容,则input/raw_input将返回空字符串。在Python中,空字符串为Falsebool("") -> False 。运算符or返回第一个真实值,这种情况下为"42"
这不是复杂的输入验证,因为用户可以输入任何东西,例如十个空格符号,然后将变成True

13
将变量命名为“input”不是一个好习惯,这样易混淆。 - Anchith Acharya
1
这取决于上下文,如果消息会说“输入你有多少苹果”,那么input将是非常糟糕的名称。 - aisbaa
7
我同意@AnchithAcharya的看法,这是一个不好的做法,因为input是一个内置函数,你将用语句的输出替换了该函数。在实践中,这可能并不是什么大问题,但如果你需要在函数中稍后再次调用input,你会发现它不像预期的那样工作,因为现在input是一个整数。 - NimbusScale

15

一种方法是:

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

另一种方法可以是:

input = raw_input("Number: ") or 0.025

对于Python 3同样适用,但需使用input()

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

14

你可以像这样做:

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

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


12

您也可以使用click,它为命令行接口提供了许多有用的功能:

import click

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

输入示例:

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

或者

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

2
大多数上面的答案都是正确的,但对于Python 3.7,以下是您可以设置默认值的方法:将“Original Answer”翻译为“最初的回答”。
user_input = input("is this ok ? - [default:yes] \n")
if len(user_input) == 0 :
    user_input = "yes"

7
这与Ber的回答中的思路相同。另外,你可能需要将"Python 3.7"更改为"Python 3",因为input在此之前就存在了。 - Georgy

2

您可以先输入一个字符串,然后检查长度是否为零并检查其是否为有效数字:

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

0

这是一个示例,用于验证用户输入是否为数字,并在他未输入任何内容时设置默认值。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接