【问题标题】: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

【问题讨论】:

标签: python user-input default-value


【解决方案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 中的空字符串是Falsebool("") -> 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))
          

          【讨论】:

            猜你喜欢
            • 2013-06-07
            • 2017-09-06
            • 2020-12-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-12-25
            • 1970-01-01
            相关资源
            最近更新 更多