【问题标题】:How to check is an input that is meant to be an integer is empty(in python)?如何检查一个意味着整数的输入是否为空(在python中)?
【发布时间】:2020-11-27 12:31:54
【问题描述】:
def aboveIntegerInput(output_message="Enter your number: ", error_1="Please enter a number above {}!", error_2="Integers only!(Please do not leave this blank)", above=0):
  while True:
    try:
      user_input = int(input(output_message))
      if user_input >= above:
        return int(user_input)
        break
      else:
        print(error_1.format(above))
    except ValueError:
      print(error_2)

正如您在此处看到的,代码应该检查输入是否为整数,并且是否高于某个值,该值默认为 0,但可以更改。

当用户输入随机字母和符号时,它会看到值错误并返回“仅限整数!(请不要留空)”。

我希望能够检查用户是否没有输入任何内容,在这种情况下,只有它应该输出“这是空白/空”,目前处理这个问题的方法是根本不检查,只说“整数仅!(请不要将此留空)”,以防出现值错误。我希望能够更具体,而不是一次吐出所有的原因。谁能帮帮我?

提前致谢。

【问题讨论】:

    标签: python validation input


    【解决方案1】:

    你可以这样做:

    def aboveIntegerInput(output_message="Enter your number: ", error_1="Please enter a number above {}!", error_2="Integers only!", above=0, error_3="Please do not leave this blank"):
      while True:
        user_input = input(output_message)
        try:
            user_input = int(user_input)
            if user_input >= above:
                return user_input
                break
            else:
                print(error_1.format(above))
        except ValueError:
            if(not user_input):
                print(error_3)
            else:
                print(error_2)
    

    我将输入移到 try/except 块之外,以便能够在 except 中使用它!这对我来说很好,我希望这是你需要的。

    【讨论】:

    • 很高兴能帮上忙,不客气!顺便说一句,我注意到在 return 语句中,您第二次将 user_input 转换为 int,这是不需要的,因为如果解释器到达 return,user_input 必须已经是 int。我编辑了我的答案。
    【解决方案2】:

    您可以将输入和转换为 int 分为两个步骤,如下所示:

    def aboveIntegerInput(output_message="Enter your number: ", error_1="Please enter a number above {}!", error_2="Integers only!(Please do not leave this blank)", above=0):
      while True:
        try:
          user_input = input(output_message)
          if not user_input:
             print("Please do not leave this blank")
             continue
          user_input = int(user_input)
          if user_input >= above:
            return int(user_input)
            break
          else:
            print(error_1.format(above))
        except ValueError:
          print(error_2)
    

    【讨论】:

    • 我在这里发现的问题是,如果您将其留空,它将跳出循环(第 7 行),因此该函数将无法完成其工作。但感谢您的意见。
    • 你说得对,我已经编辑了代码:使用 continue 代替 break,你不会跳出循环。
    猜你喜欢
    • 1970-01-01
    • 2020-07-29
    • 2018-05-19
    • 2013-01-05
    • 1970-01-01
    • 2013-10-26
    • 2016-05-19
    相关资源
    最近更新 更多