亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: isdigit()不能判斷負(fù)數(shù) [打印本頁]

作者: holmes86    時(shí)間: 2008-10-06 10:42
標(biāo)題: isdigit()不能判斷負(fù)數(shù)
>>> '-1'.isdigit()
False
>>> '1'.isdigit()
True


請問怎么判斷輸入的是數(shù)字,包括輸入的是負(fù)數(shù)時(shí),謝謝
作者: limodou    時(shí)間: 2008-10-06 11:57
可以使用:
try:
    int(a)
except:
    pass
作者: holmes86    時(shí)間: 2008-10-06 14:07
標(biāo)題: 回復(fù) #2 limodou 的帖子
除了這個(gè)還有沒有其它的方法,為什么isdigit()不能判斷負(fù)數(shù)為數(shù)字呢?
作者: leefurong    時(shí)間: 2008-10-06 14:36
isdigit的docstring:
Return True if all characters in S are digits
and there is at least one character in S, False otherwise.'
可見,isdigit逐個(gè)判斷字符串中的每個(gè)字符,是否所有的都是數(shù)字(也就是說'0'到'9')?

'-1'.isdigit()返回False是因?yàn)?-'不是一個(gè)digit。

如果樓主想判斷輸入的in_str是否整數(shù),可以這樣:
if (in_str[0] == '-' and in_str[1:] or in_str).isdigit():
    ...

當(dāng)然也可以這樣:
import re
if re.match(r'^-?\d+$', in_str):
    ...

如果輸入的可能是小數(shù),可以這樣:
import re
if re.match(r'^-?(\.\d+|\d+(\.\d+)?)', in_str)
    ...
作者: pumaboyd    時(shí)間: 2008-10-06 15:25
原帖由 limodou 于 2008-10-6 11:57 發(fā)表
可以使用:
try:
    int(a)
except:
    pass



感覺這個(gè)是最簡單的,但還是覺得不優(yōu)雅。
作者: bohemia    時(shí)間: 2008-10-07 11:11
>>> a=10;
>>> isinstance(a,int)
True
>>> a=-10;
>>> isinstance(a,int)
True
>>> a='asdf'
>>> isinstance(a,int)
False
>>>
作者: limodou    時(shí)間: 2008-10-07 11:12
樓上的不行,lz要判斷的不是對象的類型,而是字符串是否是數(shù)值表示。
作者: bohemia    時(shí)間: 2008-10-10 16:36
那看來只能正則匹配了.
作者: leefurong    時(shí)間: 2008-10-10 23:20
原帖由 leefurong 于 2008-10-6 14:36 發(fā)表
isdigit的docstring:
Return True if all characters in S are digits
and there is at least one character in S, False otherwise.'
可見,isdigit逐個(gè)判斷字符串中的每個(gè)字符,是否所有的都是數(shù)字(也就是 ...



想起來了,string[0] == 'a' 可以這樣:string.startswith('a')
更優(yōu)雅
作者: mozer    時(shí)間: 2011-07-26 11:49
支持6L isinstance(STRING,TYPE)....
作者: ubuntu_mark    時(shí)間: 2011-07-26 14:40
學(xué)習(xí)
作者: hebingyue    時(shí)間: 2012-12-18 16:01
正則才是瑞士軍刀。
作者: 今生路人甲    時(shí)間: 2012-12-18 17:17
根據(jù)前面的回答總結(jié)了個(gè)非正則版本:
  1. def CheckDigit(Num):
  2.     try:
  3.         Num = int(Num)
  4.     except:
  5.         print "%s is not a digit"%str(Num)
  6.     if isinstance(Num, int):
  7.         print "%s is a digit"%str(Num)
  8.     else:
  9.         print "%s is not a digit"%str(Num)
復(fù)制代碼

作者: chyanog    時(shí)間: 2012-12-19 11:57
  1. '1'.lstrip('-').isdigit()
  2. '-1'.lstrip('-').isdigit()
復(fù)制代碼
這樣不就行了嗎
作者: ssfjhh    時(shí)間: 2012-12-19 12:27
回復(fù) 14# chyanog
高明

   




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2