python3.2.2 如何判断输入的字符串为数字,int或者float的,是要写正则表达式吗? 只能输入数字和字母组合的正则表达式怎么写?

python3.2.2 \u5982\u4f55\u5224\u65ad\u8f93\u5165\u7684\u5b57\u7b26\u4e32\u4e3a\u6570\u5b57,int\u6216\u8005float\u7684,\u662f\u8981\u5199\u6b63\u5219\u8868\u8fbe\u5f0f\u5417?

\u4e0d\u7528\u5199\u6b63\u5219\u8868\u8fbe\u5f0f\u4e5f\u884c\u7684\uff0c\u4ecb\u7ecd\u4f60\u4e24\u79cd\u65b9\u6cd5
\u7b2c\u4e00\u79cd:\u5c06\u53d8\u91cf\u8f6c\u6362\u4e3afloat\u578b\uff0c\u5982\u679c\u80fd\u6210\u529f\u5219\u662f\u6570\u5b57\uff0c\u5982\u679c\u629b\u51fa\u9519\u8bef\u5219\u4e0d\u662f\u6570\u5b57\u3002
\u4ee3\u7801\u5982
def
isisnumber(a):
try:
float(a)
return
'is
number'
#\u80fd\u6210\u529f\u8f6c\u6362\u4e3a\u6d6e\u70b9\u578b\uff0c\u5219\u662f\u6570\u5b57
except:
return
'not
number'
#\u4e0d\u80fd\u6210\u529f\u8f6c\u6362\u4e3a\u6d6e\u70b9\u578b\uff0c\u5219\u4e0d\u662f\u6570\u5b57
==================================================
\u7b2c\u4e8c\u79cd:\u5c06\u8981\u5224\u65ad\u7684\u6bcf\u4e00\u4f4d\u8f6c\u6362\u4e3aASCII\u7801\u5982\u679c\u572848-57\u4e4b\u95f4\u5219\u662f\u6570\u5b57
\u4ee3\u7801\u5982
def
isnumber(a):
t=0
for
i
in
range(0,len(a)):
if
ord(a[i])>57
or
ord(a[i])<48:
#\u8f6c\u5316\u4e3aascii\u7801
\u5224\u65ad\u6bcf\u4e00\u4f4d\u662f\u5426\u90fd\u4e3a\u6570\u5b57
if
a[i]
!=
'.'
or
t==1
:
#\u5982\u679c\u4e0d\u662f\u6570\u5b57\u6216\u7b2c\u4e8c\u6b21\u51fa\u73b0\u5c0f\u6570\u70b9\uff0c\u90a3\u4e48\u5f97\u5230\u7ed3\u679c\u4e0d\u662f\u6570\u5b57
return
'not
number'
elif
a[i]
==
'.':
#\u5982\u679c\u4e0d\u662f\u6570\u5b57\u4f46\u662f\u662f\u5c0f\u6570\u70b9.\u90a3\u4e48\u505a\u4e2a\u6807\u8bb0\uff0c\u8868\u793a\u5df2\u51fa\u73b0\u8fc7\u4e00\u6b21\u5c0f\u6570\u70b9
t=1
return
'is
number'
#\u5982\u679c\u5b8c\u6210\u5168\u90e8\u5faa\u5316\uff0c\u5219\u662f\u6570\u5b57
==========================================
\u4f7f\u7528\u65f6\uff0c\u6bd4\u5982print(isnumber(x))\uff0c\u5982\u679cx\u4e3a\u6570\u5b57\u5219\u4f1a\u8f93\u51fais
number
\u5982\u679c\u4e0d\u662f\u6570\u5b57
\u5219\u4f1a\u8f93\u51fanot
number\u3002
\u5e0c\u671b\u80fd\u5bf9\u4f60\u6709\u6240\u5e2e\u52a9!

\u6b63\u5219\u8868\u8fbe\u5f0f2

不用写正则表达式也行的,介绍你两种方法
第一种:将变量转换为float型,如果能成功则是数字,如果抛出错误则不是数字。
代码如
def isisnumber(a):
try:
float(a)
return 'is number' #能成功转换为浮点型,则是数字
except:
return 'not number' #不能成功转换为浮点型,则不是数字

==================================================

第二种:将要判断的每一位转换为ASCII码如果在48-57之间则是数字
代码如
def isnumber(a):
t=0
for i in range(0,len(a)):
if ord(a[i])>57 or ord(a[i])<48: #转化为ascii码 判断每一位是否都为数字
if a[i] != '.' or t==1 : #如果不是数字或第二次出现小数点,那么得到结果不是数字
return 'not number'
elif a[i] == '.': #如果不是数字但是是小数点.那么做个标记,表示已出现过一次小数点
t=1
return 'is number' #如果完成全部循化,则是数字
==========================================

使用时,比如print(isnumber(x)),如果x为数字则会输出is number 如果不是数字 则会输出not number。

希望能对你有所帮助!

给你个简单的方法,在2.7下好用↓

利用isinstance()函数,来判断一个对象是否是一个已知的类型:

lst = []

isinstance(lst, list)
True

isinstance(lst, (int, str, list))
True

def isisnumber(s):
try:
float(s)
return 1
except:
return 0
s=input("please inupt string:")
if s.isdigit() or isisnumber(s):
print('都是数字!')
else:
print('不知道是什么鬼')

扩展阅读:python天天向上3.3 ... pythontipapp下载 ... python3.4下载安装 ... python3.11安装 ... python 在线 ... python3.8手机安装包 ... python3.7下载免费版 ... python手机版下载安装 ... python3.6下载官网 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网