当我尝试执行代码时,第一个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")
答案 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)
您不需要将输入转换为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
,但整数的结果看起来像246.0
。