python骚操作之——判断整数
Alex ☆ 想要改變世界的007程序員
在很多場景下都需要用到判斷一個數是否為整數的需求,正好今天遇到了,在這里總結一下,以后可以繼續補充。
1.type判斷是否為整型
type() 函數如果你只有第一個參數則返回對象的類型,三個參數返回新的類型對象。
type() 方法的語法:
type(object) type(name, bases, dict)- name – 類的名稱。
- bases – 基類的元組。
- dict – 字典,類內定義的命名空間變量。
所以用type判斷整數就很方便:
>>> type(1) == int True >>> type(1.0) == int False >>> type(1.0) <class 'float'>2.isinstance判斷是否為整型
Python中isinstance() 函數來判斷一個對象是否是一個已知的類型,類似 type()。
isinstance() 方法的語法:isinstance(object, classinfo)
>>>a = 2 >>> isinstance (a,int) True >>> isinstance (a,str) False >>> isinstance (a,(str,int,list)) # 是元組中的一個返回 True Trueisinstance() 與 type() 區別:
- type() 不會認為子類是一種父類類型,不考慮繼承關系。
- isinstance() 會認為子類是一種父類類型,考慮繼承關系。
如果要判斷兩個類型是否相同推薦使用 isinstance()。
class A:passclass B(A):passisinstance(A(), A) # returns True type(A()) == A # returns True isinstance(B(), A) # returns True type(B()) == A # returns False用isinstance()判斷整數跟type類似:
>>> isinstance(1, int) True >>> isinstance(1.0, int) False >>> isinstance(1.0, float) True3.%判斷是否為整型
有的時候針對1.0這樣的數據,其實也是int,但是在Python中卻會被認為是float,對于一個不管是不是整型的數想要判斷它是不是整數,可以借助%操作來實現。
>>> 1 % 1 0 >>> 1.0 % 1 0.0 >>> 1.1 % 1 0.10000000000000009 >>> 1.5 % 1 0.5可以發現,一個整數不管是int類型還是float類型,對1取余都是0,所以可以根據這個特性來判斷一個數是不是整數。
1.1 % 1 = 0.10000000000000009 是怎么回事?
其實類似的還有0.1 + 0.2 = 0.30000000000000004,其原因在于十進制和二進制的轉換上,計算機先要把十進制的數轉化為二進制,然后再計算。
但是,在轉化中,浮點數轉化為二進制,就出問題了,例如:十進制的 0.1,轉化為二進制是:0.0001100110011001100110011001100110011001100110011…
也就是說,轉化為二進制后,不會精確等于十進制的 0.1,同時,計算機存儲的位數是有限制的,所以,就出現上述現象了。
總結
以上是生活随笔為你收集整理的python骚操作之——判断整数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 选择最好用的PyCharm IDE
- 下一篇: 读取用户指令