【问题标题】:i want to generate an exception when user enters integer values instead of String value.. how can i do it?当用户输入整数值而不是字符串值时,我想生成一个异常。我该怎么做?
【发布时间】:2018-01-18 07:49:43
【问题描述】:
def log_in():
    user_name1="xyz"
    try:
        user_name =(input("Enter your username:"))
        if (user_name ==user_name1):
            print("welcome")
    except TypeError:
        print("Enter only characters")
log_in()

我想在用户输入整数值而不是字符串值时生成异常

【问题讨论】:

  • 有什么例外?请为您的代码添加一些解释。
  • 这是在 python 3.x 还是 python 2.x 中?
  • 请编辑您对该问题的评论。
  • 另外,展示你的努力。只需“检查any 是否属于characters in user_name isdigit”。现在将其转换为 Python 代码。

标签: python exception


【解决方案1】:

当您在控制台中输入一个整数时,input(...) 以字符串形式返回用户输入的输入。所以你永远不会得到TypeError 异常。您也不需要在input() 周围包含str() 函数。

【讨论】:

    【解决方案2】:

    由于您对Type Checking 感兴趣,您可能希望稍微反转一下您的逻辑:

    def log_in():
        user_name1  = "xyz"
        user_name   = input("Enter your username:\n") # str()
        try:
            # FOR YOUR USE CASE, IT WOULD SUFFICE TO SIMPLY TRY TO CAST THE ENTERED 
            # INPUT TO AN INT (INITIALLY) -  REGARDLESS OF WHETHER IT'S INT OR STRING:
            # PERHAPS STRIP-OFF ALL EXTRA WHITE-SPACES AS WELL
            int( user_name.strip() )
    
            # IF WE ARE SURE IT'S AN INT, THEN: WE RESPOND ACCORDINGLY -
            print("Solely Numeric characters are not allowed as Username....")
            # THEN IMMEDIATELY BAIL OUT OF THE FUNCTION:
            return False
        except:
            pass
    
        # COMPARE ENTERED USERNAME WITH EXPECTED VALUE
        # IF ALL GOES WELL THEN, WELCOME THE USER
        if user_name.strip() == user_name1:
            print("welcome")
        else:
            print("Wrong Credentials....")
    
    log_in() 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      • 1970-01-01
      相关资源
      最近更新 更多