【问题标题】:Python exception user inputPython 异常用户输入
【发布时间】:2021-04-11 13:47:27
【问题描述】:

您好,我是 python 新手,遇到异常问题。我添加了一个例外,但它不起作用。以下是我的问题示例。

    if x == '1':


    print("----------------------------------")

    print("1. REQUEST FOR A DOG WALKER")

    print("----------------------------------")

    try:
        print("Select a Date (DD/MM/YY) - eg 12/04/21")

    except ValueError:
        raise ValueError('empty string')
    date = input()
    
    try:
        print("Select a Duration (in hours) - eg 2")
        duration = input()
    except ValueError:
       print('empty string')

    print("Select a breed : 1 - Rottwieler , 2 - Labrador Retriever, 3 - Pitbull, 4 - Other ")

    breed = input()

    print("Number of Dogs - eg 3 ")

    dogsNumber = input()

【问题讨论】:

  • 这里有两个例外,第一个不接受任何输入。哪个不工作?
  • 也许还能告诉我们“不工作”的确切含义以及您的预期行为是什么。那么我们或许可以为您提供帮助。您可以编辑您的问题以添加相关信息。祝你有美好的一天!
  • 第一个异常如果为空或格式错误程序继续

标签: python exception


【解决方案1】:

每当您使用 try/except 语句时,您都试图捕捉代码中发生的不应该发生的事情。在您的示例中,您让用户在一段时间内输入一个数字:

print("Select a Duration (in hours) - eg 2")
duration = input()

此时,持续时间可能等于“2”。如果你想给它加 10,那么你不能,因为它是一个字符串(你不能和 int+str)。为了做这样的事情,您必须将用户输入转换为 int。例如:

持续时间 = int(输入())

问题是,如果用户输入一个字母 A,那么程序在尝试将其转换为 int 时会中断。使用 try/except 语句将捕获此行为并正确处理它。例如:

    try:
        print("Select a Duration (in hours) - eg 2")
        duration = int(input())
    except ValueError:
       print('empty string')

【讨论】:

    【解决方案2】:

    您的代码中没有任何内容可以产生ValueError

    所以except ValueError: 不匹配。

    【讨论】:

      【解决方案3】:

      1 - 您没有检查任何引发错误的条件

      2 - 你没有捕捉到 ValueError,你必须引发它,然后用 except 语句捕捉。

      试试这个:

      if x == '1':
      
      
          print("----------------------------------")
      
          print("1. REQUEST FOR A DOG WALKER")
      
          print("----------------------------------")
          
          print("Select a Date (DD/MM/YY) - eg 12/04/21")
      
          try:
              date = input()
              if len(date) == 0:
                 raise ValueError('empty string')
          except ValueError as error:
              print(error)
         
      

      【讨论】:

      • 也可以使用assert len(data) > 0 来获得更 Pythonic 的解决方案。
      • 如果输入的日期格式错误或我输入了一个整数怎么办
      • 有很多方法可以做到这一点:导入 re 并使用正则表达式检查格式;导入日期时间;或手动处理字符串,这更困难但更有启发性!
      猜你喜欢
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 2013-04-14
      • 1970-01-01
      • 2013-04-14
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      相关资源
      最近更新 更多