請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100",「5e2」,"-123",「3.1416"和」-1e-16"都表示數值。 但是"12e",「1a3.14」,「1.2.3」,"±5"和"12e+4.3"都不是。
全面考慮數值中,整數,小數,指數部分的特點,比如哪些部分可以出現正負號,而哪些部分不能。
'.'前或後可以沒有沒有數字
'e/e』前面必須有數字,後面必須是整數
def
isnumeric
(s):
spl = s.split(
'.')
iflen
(spl)
>2:
# 不能有超過(含)兩個小數點的
return
false
elif
len(spl)
>1:
# decimal
integer = spl[0]
last = spl[1]
if integer[0]
=='+'
or integer[0]
=='-'
: integer = integer[1:
]ifnot checkint(integer)
:return
false
# 小數部分不能帶符號
if(last[0]
=='+'
or last[0]
=='-'):
return
false
else
: integer =
none
last = spl[0]
# 整數小數都為空
if(integer ==
none
andlen
(last)==0
):return
false
spe = last.split(
'e')
spe = last.split(
'e')
exponent =
none
iflen
(spe)
>1:
aheade = spe[0]
exponent = spe[1]
elif
len(spe)
>1:
aheade = spe[0]
exponent = spe[1]
else
: aheade = spe[0]
# 小數部分是0-9
if integer !=
none
and checkint(aheade)
:return
true
# 無小數且無指數,如果不是純整數,那麼就不是數值
if integer ==
none
:if aheade[0]
=='+'
or aheade[0]
=='-'
: aheade = aheade[1:
]if checkint(aheade)
:return
true
return
false
# 指數前/後面要有數字
iflen
(aheade)==0
orlen
(exponent)==0
:return
false
# 指數後面不能是小數
iflen
(exponent.split(
'.')
)>1:
return
false
if exponent[0]
=='+'
or exponent[0]
=='-'
: exponent = exponent[1:
]if checkint(exponent)
:return
true
defcheckint
(s):
l =[str
(i)for i in
range(10
)]# 定義整數轉換的字串陣列
for i in
range
(len
(s))
:if s[i]
in l:
continue
else
:return
false
return
true
劍指Offer 表示數值的字串
題目 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。基本思路 字串應滿足通式a b e ec 或者.b e ec 其中,a c表示有 或無 ...
表示數值的字串 劍指offer
這道題寫起來比較繁瑣,需要考慮 號是否出現在第乙個位置,是否出現一次,以e為分割前後是不是正確的格式,e前可以為浮點數或者整數,e後只能是整數。因此如果把函式分成三個子函式來寫就好多了,乙個函式判斷是不是整數,乙個判斷是不是浮點數,乙個判斷e前後是否合法。include include bool i...
劍指offer 表示數值的字串
請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。本題考查對字串的程式設計能力,我們需要從不同型別的數值中分析規律,要全面考慮數值整數,小數,指...