【问题标题】:the first if condition is work but the elif condition isn't第一个 if 条件有效,但 elif 条件无效
【发布时间】:2020-03-15 00:13:24
【问题描述】:

当我尝试执行代码时,第一个 if 条件有效,但 elif 条件无效。在条件语句之后,except 条件运行没有问题。

data = input("Type the number: ")
try:
    integer = int(data)
    decimal = float(data)
    if type(integer) == type(int()):
        for x in range(1,11,1):
            print("{} X {} = {}".format(integer,x,(integer*x)))
    elif type(decimal) == type(float()):  
        for x in range(1,11,1):
            print("{} X {} = {}".format(decimal,x,(decimal*x)))
except (TypeError,ValueError):
    print("Please type a number")

【问题讨论】:

  • 为什么会起作用? integer 总是一个整数,那为什么会是假的呢?
  • 为了让@Daniel Roseman 的注释更清晰,任何浮点数都可以转换为int:type(int(1.2323)) == type(int()),所以elif 永远不会被执行。
  • 嗨@Arsallan,如果您找到了有价值的答案,请将其标记为已接受,否则请在您的问题中添加更多精确度:)

标签: python python-3.x if-statement conditional-statements


【解决方案1】:

通过阅读您的代码,我相信您试图判断用户输入的数据是否为整数。 为此,请参考this link

data = input("Type the number: ")
try:
    decimal = float(data) # if data is not the representation of a float, this will raise an error
    if decimal.is_integer():
        integer = int(decimal)
        for x in range(1,11,1):
            print("{} X {} = {}".format(integer,x,(integer*x)))
    else:
        for x in range(1,11,1):
            print("{} X {} = {}".format(decimal,x,(decimal*x)))
except (TypeError,ValueError):
    print("Please type a number")

关于您的代码的另一个说明:int(<anything>) 将引发错误或返回 int。所以你的第一个条件总是True

【讨论】:

    【解决方案2】:

    您无需将输入转换为intfloat,只需转换为其中之一即可。由于datastr,您可以使用isdigit 检查是否所有字符都是数字,因此它是int,或者不是。您也不应该将类型与== 进行比较,请使用isinstance

    data = input("Type the number: ")
    
    try:
        if data.isdigit():
            number = int(data)
        else:
            number = float(data)
    
        if isinstance(number, int):
            for x in range(1, 11, 1):
                print("{} X {} = {}".format(number, x, (number * x)))
        elif isinstance(number, float):
            for x in range(1, 11, 1):
                print("{} X {} = {}".format(number, x, (number * x)))
    except (TypeError, ValueError):
        print("Please type a number")
    

    如果你没有对什么是类型的信息做任何事情,使用一个循环而不检查

    data = input("Type the number: ")
    
    try:
        if data.isdigit():
            number = int(data)
        else:
            number = float(data)
        for x in range(1, 11, 1):
            print("{} X {} = {}".format(number, x, (number * x)))
    except (TypeError, ValueError):
        print("Please type a number")
    

    您也可以将输入直接转换为 float,但结果将类似于 246.0 的整数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      相关资源
      最近更新 更多