您好,登錄后才能下訂單哦!
這篇文章主要講解了“python如何判斷一個(gè)數(shù)值為整數(shù)”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“python如何判斷一個(gè)數(shù)值為整數(shù)”吧!
浮點(diǎn)數(shù)的自帶方法is_integer()
如果確定輸入的內(nèi)容為浮點(diǎn)數(shù),是可以直接使用float數(shù)的is_integer()函數(shù)來進(jìn)行判定。
需要注意的是當(dāng)數(shù)字是 1.0這樣的不帶小數(shù)數(shù)值的浮點(diǎn)數(shù)時(shí),會(huì)被默認(rèn)判定為整數(shù)
a=1.0 print(a.is_integer()) #結(jié)果為 True b=1.1 print(b.is_integer()) #結(jié)果為 False
但是如果數(shù)字本身就是int類型,那么沒有is_integer()函數(shù),會(huì)報(bào)錯(cuò):
a=1 print(a.is_integer()) #報(bào)錯(cuò) Traceback (most recent call last): File "E:/PycharmOut/Test/TestAll/testString/intOrFloat.py", line 7, in <module> print(a.is_integer()) AttributeError: 'int' object has no attribute 'is_integer'
思路是:先檢查輸入的內(nèi)容是否可以轉(zhuǎn)成float,之后再判定有沒有帶小數(shù)點(diǎn)
def isIntSeriously(number): result = False try: n = float(number) if n.is_integer() and str(number).count('.') == 0: result =True except : print('非數(shù)字') return result print(isIntSeriously('a3')) print() print(isIntSeriously('3')) print() print(isIntSeriously('3.0')) #結(jié)果 非數(shù)字 False True False
小結(jié):
當(dāng)輸入確定為浮點(diǎn)類型時(shí),我們關(guān)心的數(shù)值是否為整數(shù),可以使用is_integer(),
比如我就希望1.0,2.0這樣的是整數(shù)
當(dāng)不確定輸入類型時(shí),可以使用上述嚴(yán)格的判定方法
遇到一個(gè)問題:如果輸入的是字符串還是整數(shù)或者是小數(shù)如何將他們區(qū)分?
首先isdigit()只能用來判斷字符串輸入的是否是整數(shù),無法判斷是否是小數(shù)
所以,先判斷該字符串是否是整數(shù),如果是返回3,
不是的話說明是字母或者是小數(shù),然后判斷是否是小數(shù),如果是小數(shù)的話返回1,
是字母的或其他的話返回2
def is_float(i): if i.isdigit():#只能用來判斷整數(shù)的字符串 return 3 else: if i.count('.') == 1: # 先判斷里面有沒有小數(shù)點(diǎn) new_i = i.split('.') # 去掉小數(shù)點(diǎn) right = new_i[-1] # 將小數(shù)分為小數(shù)點(diǎn)右邊 left = new_i[0] # 小數(shù)點(diǎn)左邊 if right.isdigit(): # 如果小數(shù)點(diǎn)右邊是數(shù)字判斷小數(shù)點(diǎn)左邊 if left.isdigit(): # 如果小數(shù)點(diǎn)左邊沒有-直接返回 return 1 elif left.count('-') == 1 and left.startswith('-'): # 如果小數(shù)點(diǎn)左邊有- new_left = left.split('-')[-1] # 判斷去掉后的還是不是數(shù)字 if new_left.isdigit(): # 是數(shù)字則返回True return 1 else: return 2 # 返回2說明是字母
輸入例子:1.2,-1.2,.2,-2.
def is_float(i): if i.count('.') == 1:#先判斷里面有沒有小數(shù)點(diǎn) new_i = i.split('.')#去掉小數(shù)點(diǎn) right = new_i[-1]#將小數(shù)分為小數(shù)點(diǎn)右邊 left = new_i[0]#小數(shù)點(diǎn)左邊 if right.isdigit():#如果小數(shù)點(diǎn)右邊是數(shù)字判斷小數(shù)點(diǎn)左邊 if left.isdigit():#如果小數(shù)點(diǎn)左邊沒有-直接返回 return True elif left.count('-')== 1 and left.startswith('-'):#如果小數(shù)點(diǎn)左邊有- new_left = left.split('-')[-1]#判斷去掉后的還是不是數(shù)字 if new_left.isdigit():#是數(shù)字則返回True return True else: return False
更簡單的判斷方法:
while True: num = input("請(qǐng)輸入一個(gè)數(shù)字:") try: n1=eval(num) except: print("輸入的不是數(shù)字程序結(jié)束") break if isinstance(n1,float): print('輸入的是小數(shù)請(qǐng)重新輸入:') continue else: print("輸入的是整數(shù)沒問題")
感謝各位的閱讀,以上就是“python如何判斷一個(gè)數(shù)值為整數(shù)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)python如何判斷一個(gè)數(shù)值為整數(shù)這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。