python怎樣判斷一個(gè)數(shù)值(字符串)為整數(shù)
如何判斷一個(gè)數(shù)值(字符串)為整數(shù)
不嚴(yán)格檢查方法
浮點(diǎn)數(shù)的自帶方法is_integer()
如果確定輸入的內(nèi)容為浮點(diǎn)數(shù),是可以直接使用float數(shù)的is_integer()函數(shù)來(lái)進(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類型,那么沒(méi)有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'
嚴(yán)格的檢查方法
思路是:先檢查輸入的內(nèi)容是否可以轉(zhuǎn)成float,之后再判定有沒(méi)有帶小數(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)格的判定方法
判斷輸入的字符串是否是整數(shù)還是小數(shù)
遇到一個(gè)問(wèn)題:如果輸入的是字符串還是整數(shù)或者是小數(shù)如何將他們區(qū)分?
首先isdigit()只能用來(lái)判斷字符串輸入的是否是整數(shù),無(wú)法判斷是否是小數(shù)
所以,先判斷該字符串是否是整數(shù),如果是返回3,
不是的話說(shuō)明是字母或者是小數(shù),然后判斷是否是小數(shù),如果是小數(shù)的話返回1,
是字母的或其他的話返回2
def is_float(i): ? ? if i.isdigit():#只能用來(lái)判斷整數(shù)的字符串 ? ? ? ? return ?3 ? ? else: ? ? ? ? if i.count('.') == 1: ?# 先判斷里面有沒(méi)有小數(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)左邊沒(méi)有-直接返回 ? ? ? ? ? ? ? ? ? ? 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說(shuō)明是字母
輸入例子:1.2,-1.2,.2,-2.
def is_float(i): ? ? if i.count('.') == 1:#先判斷里面有沒(méi)有小數(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)左邊沒(méi)有-直接返回 ? ? ? ? ? ? ? ? ? ? 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
更簡(jiǎn)單的判斷方法:
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ù)沒(méi)問(wèn)題")
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
在Python上基于Markov鏈生成偽隨機(jī)文本的教程
這篇文章主要介紹了在Python上基于Markov鏈生成偽隨機(jī)文本的教程,是一個(gè)基于馬爾可夫算法的小實(shí)現(xiàn),充分體現(xiàn)了Python在科學(xué)計(jì)算中的用途,需要的朋友可以參考下2015-04-04利用 Python 實(shí)現(xiàn)隨機(jī)相對(duì)強(qiáng)弱指數(shù) StochRSI
隨機(jī)相對(duì)強(qiáng)弱指數(shù)簡(jiǎn)稱為StochRSI,是一種技術(shù)分析指標(biāo),用于確定資產(chǎn)是否處于超買或超賣狀態(tài),也用于確定當(dāng)前市場(chǎng)的態(tài)勢(shì)。本篇文章小編九來(lái)為大家介紹隨機(jī)相對(duì)強(qiáng)弱指數(shù)簡(jiǎn)稱為StochRSI,需要的朋友可以參考下面文章的具體內(nèi)容2021-09-09新手學(xué)習(xí)Python2和Python3中print不同的用法
在本篇文章里小編給大家分享的是關(guān)于Python2和Python3中print不同的用法,有興趣的朋友們可以學(xué)習(xí)下。2020-06-06Python+mpld3實(shí)現(xiàn)交互式Matplotlib圖表
通過(guò)結(jié)合使用Matplotlib和mpld3庫(kù),我們可以輕松地創(chuàng)建交互式圖表,使得數(shù)據(jù)可視化更加生動(dòng)和易于理解,下面就跟隨小編一起來(lái)學(xué)習(xí)一下具體實(shí)現(xiàn)方法吧2024-10-10Python3使用matplotlib繪圖時(shí),坐標(biāo)軸刻度不從X軸、y軸兩端開(kāi)始
這篇文章主要介紹了Python3使用matplotlib繪圖時(shí),坐標(biāo)軸刻度不從X軸、y軸兩端開(kāi)始問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08python如何通過(guò)protobuf實(shí)現(xiàn)rpc
這篇文章主要為大家詳細(xì)介紹了python通過(guò)protobuf實(shí)現(xiàn)rpc的方法,感興趣的朋友可以參考一下2016-03-03