第一个if条件是工作条件,但elif条件不是

时间:2019-11-19 12:57:06

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

当我尝试执行代码时,第一个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")

2 个答案:

答案 0 :(得分:0)

通过阅读您的代码,我相信您正在尝试判断用户输入的数据是否为整数。 为此,请参考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

答案 1 :(得分:0)

您不需要将输入转换为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