Python 尝试除浮点数外,但不尝试整数

Python 尝试除浮点数外,但不尝试整数,python,try-except,Python,Try Except,因此,我在编程练习中遇到了一个障碍。我理解try-except的概念,但如何使用try-except处理程序只接受浮点或十进制,如果输入了整数或整数,它将抛出错误消息。我知道理论上这是不可能的,但有办法吗 理想情况下,我希望使用一个try-except代码块,因为这是我当前正在学习的课程 提前感谢大家 如何使用。\u integer()是否在浮点值上 >>> float(5).is_integer() True >>> float(5.12).is_integ

因此,我在编程练习中遇到了一个障碍。我理解try-except的概念,但如何使用try-except处理程序只接受浮点或十进制,如果输入了整数或整数,它将抛出错误消息。我知道理论上这是不可能的,但有办法吗

理想情况下,我希望使用一个try-except代码块,因为这是我当前正在学习的课程


提前感谢大家

如何使用
。\u integer()
是否在
浮点值上

>>> float(5).is_integer()
True
>>> float(5.12).is_integer()
False
>>> 
所以

或(检查是否为整数):

如果abs(可变)-地板(abs(可变))<1.0e-9:
raise VALUERROR('提供的数字无效')

这里有很好的答案,但到目前为止,答案没有按要求使用try/except。要使用try-except,您需要尝试一些东西,如果为false,则抛出异常,然后捕获异常

try:
    x / (x - int(x))
except ZeroDivisionError:
    raise Exception("No integers allowed.")

你的意思是
如果输入(num)in(float,int,Decimal):
?那仍然是一个float。如果您的意思是希望它也引发异常,那么只需添加更多的案例。或者,如果您只是不想接受int,请改用第二条语句。请再次编辑。我确实认为这个问题最初是关于引发异常,而不是如何检查整数,但是哦:)@PeterWood op的要求是除了float/decimal之外的任何东西都是无效的。第一张支票就是这样。op的请求
只接受浮点或十进制
,他使用的是有问题的python语言。那么问题出在哪里呢?哦,好吧,如果float(5)=int(5):raise ValueError()
,那么就使用浮点和整数比较
,是的,我没有看到最后一部分,因为这是迄今为止最好的答案。如果float(x)=int(x):
,你对
有什么看法?@karthikr这太棒了!我不敢相信这些年来我一直在编写python,却不知道这一点。非常感谢。@JohnRuddell当然,但净效果不一样吗?@saulspatz很高兴看到这一点helped@karthikr是的,我相信是这样。我不知道时间复杂度是多少,
is\u integer()
只是想知道其中一个是否比另一个更有效
if type(variable) is not float:
    raise ValueError('Invalid number provided')
if type(variable) is int:
    raise ValueError('Invalid number provided')
if abs(variable) - floor(abs(variable)) < 1.0e-9:
    raise ValueError('Invalid number provided')
you can check the number against types.
# add or remove types from the list
if type(num) in (float, int, Decimal):
  do something 
try:
    x / (x - int(x))
except ZeroDivisionError:
    raise Exception("No integers allowed.")