Python 第一个if条件为work,但elif条件为';T

Python 第一个if条件为work,但elif条件为';T,python,python-3.x,if-statement,conditional-statements,Python,Python 3.x,If Statement,Conditional Statements,当我试图执行代码时,第一个if条件是work,而elif条件不是work。在条件语句之后,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 {} = {}".f

当我试图执行代码时,第一个
if
条件是work,而
elif
条件不是work。在条件语句之后,
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")

通过阅读您的代码,我相信您正在尝试判断用户输入的数据是否为整数。 为此,请参阅:

data=input(“键入数字:”)
尝试:
十进制=浮点(数据)#如果数据不是浮点的表示形式,则会产生错误
如果decimal.is_integer():
整数=整数(十进制)
对于范围(1,11,1)内的x:
打印(“{}X{}={}”。格式(整数,X,(整数*X)))
其他:
对于范围(1,11,1)内的x:
打印(“{}X{}={}”。格式(十进制,X,(十进制*X)))
除了(TypeError、ValueError):
打印(“请键入一个数字”)

关于代码的另一个注意事项:
int()
将抛出错误或返回
int
。因此,您的第一个条件总是
True

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

data=input(“键入数字:”)
尝试:
十进制=浮点(数据)#如果数据不是浮点的表示形式,则会产生错误
如果decimal.is_integer():
整数=整数(十进制)
对于范围(1,11,1)内的x:
打印(“{}X{}={}”。格式(整数,X,(整数*X)))
其他:
对于范围(1,11,1)内的x:
打印(“{}X{}={}”。格式(十进制,X,(十进制*X)))
除了(TypeError、ValueError):
打印(“请键入一个数字”)

关于代码的另一个注意事项:
int()
将抛出错误或返回
int
。因此,您的第一个条件总是
True

您不需要将输入转换为
int
float
,只转换为其中一个。由于
data
str
,您可以使用
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
,但对于int,结果将类似于
246.0

您不需要将输入转换为
int
float
,只转换为其中一个。由于
data
str
,您可以使用
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
,但对于ints,结果将类似于
246.0

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