空用户输入的默认值
Posted
技术标签:
【中文标题】空用户输入的默认值【英文标题】:Default values on empty user input 【发布时间】:2014-04-19 14:23:23 【问题描述】:如果用户从键盘输入值,我必须在这里设置默认值。这是用户可以输入值的代码:
input = int(raw_input("Enter the inputs : "))
在输入值并点击 Enter 后,此处的值将分配给变量 input
。有没有什么方法,如果我们不输入值直接按Enter键,变量会直接赋值给一个默认值,比如input = 0.025
?
【问题讨论】:
... 如果用户只是按 Enter 键就会失败input
是 Python 中的内置函数,您可能想使用不同的变量名...
相关但不重复:How to set a default string for raw_input?
【参考方案1】:
Python 3:
input = int(input("Enter the inputs : ") or "42")
Python 2:
input = int(raw_input("Enter the inputs : ") or "42")
它是如何工作的?
如果未输入任何内容,则 input
/raw_input
返回空字符串。 Python 中的空字符串是False
、bool("") -> False
。运算符or
返回第一个真值,在本例中为"42"
。
这不是复杂的输入验证,因为用户可以输入任何内容,例如十个空格符号,则为True
。
【讨论】:
将变量命名为“输入”不是坏习惯吗? 这取决于上下文,如果消息会说“输入你有多少个苹果”,那么是的,input
将是一个非常糟糕的名字。
@AnchithAcharya,我同意这是不好的做法,因为input
是一个内置函数,您将用语句的输出替换该函数。实际上,这可能没什么大不了的,但是如果您需要稍后在函数中再次请求input
,您会发现它无法按预期工作,因为input
现在将是int
。
你是个救命稻草【参考方案2】:
你可以这样做:
>>> try:
input= int(raw_input("Enter the inputs : "))
except ValueError:
input = 0
Enter the inputs :
>>> input
0
>>>
【讨论】:
【参考方案3】:一种方法是:
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"
【讨论】:
【参考方案4】:您也可以为此使用click
library,它为命令行界面提供了许多有用的功能:
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
【讨论】:
【参考方案5】:以上大部分答案都是正确的,但对于 Python 3.7,您可以执行以下操作来设置默认值。
user_input = input("is this ok ? - [default:yes] \n")
if len(user_input) == 0 :
user_input = "yes"
【讨论】:
这与Ber's answer中的想法相同。此外,您可能想将“Python 3.7”更改为“Python 3”,因为在此之前input
也存在。【参考方案6】:
您可以先输入一个字符串,然后检查零长度和有效数字:
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
【讨论】:
【参考方案7】:这是一个验证用户输入是否为数字的示例,如果他什么都不输入,则设置默认值。
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))
【讨论】:
以上是关于空用户输入的默认值的主要内容,如果未能解决你的问题,请参考以下文章
SAS:使用用户定义格式时,如果不匹配,“默认值”是未格式化的输入变量吗?
练习:编写循环,让用户输入用户名和密码,如果用户为空或者数字,则重新输入