python3.2.2 如何判断输入的字符串为数字,int或者float的,是要写正则表达式吗? 请问python编程中怎么用正则表达式来编写一个程序,从而判...

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\uff1a\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\uff1a\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\uff01

1. \u7a0b\u5e8f\u5982\u4e0b\uff1a
import re

number = str(input("Please input a number:"))
pattern = re.compile(r'^[-+]?[0-9]+\.[0-9]+$')
match = pattern.match(number)

if match:
print "Number is a float."
else:
print "Number is not a float."

2. \u5173\u4e8e\u8fd9\u4e2a\u6b63\u5219\u8868\u8fbe\u5f0f\uff0c\u89e3\u91ca\u4e00\u4e0b\uff1a
^[-+]?[0-9]+\.[0-9]+$
^\u8868\u793a\u4ee5\u8fd9\u4e2a\u5b57\u7b26\u5f00\u5934\uff0c\u4e5f\u5c31\u662f\u4ee5[-+]\u5f00\u5934\uff0c[-+]\u8868\u793a\u5b57\u7b26-\u6216\u8005+\u4e4b\u4e00\uff0c
?\u8868\u793a0\u4e2a\u62161\u4e2a\uff0c\u4e5f\u5c31\u662f\u8bf4\u7b26\u53f7\u662f\u53ef\u9009\u7684\u3002
\u540c\u7406[0-9]\u8868\u793a0\u52309\u7684\u4e00\u4e2a\u6570\u5b57\uff0c+\u8868\u793a1\u4e2a\u6216\u591a\u4e2a\uff0c\u4e5f\u5c31\u662f\u6574\u6570\u90e8\u5206\u3002
\.\u8868\u793a\u7684\u662f\u5c0f\u6570\u70b9\uff0c\\u662f\u8f6c\u4e49\u5b57\u7b26\u56e0\u4e3a.\u662f\u7279\u6b8a\u7b26\u53f7\uff08\u5339\u914d\u4efb\u610f\u5355\u4e2a\u9664\r\n\u4e4b\u5916\u7684\u5b57\u7b26\uff09\uff0c
\u6240\u4ee5\u9700\u8981\u8f6c\u4e49\u3002
\u5c0f\u6570\u90e8\u5206\u540c\u7406\uff0c$\u8868\u793a\u5b57\u7b26\u4e32\u4ee5\u6b64\u7ed3\u5c3e\u3002

3. \u5173\u4e8e\u6b63\u5219\u8868\u8fbe\u5f0f\uff0c\u6839\u636e\u9700\u8981\u6709\u597d\u51e0\u79cd\u5199\u6cd5\uff1a

1. \u5f3a\u5236\u7b26\u53f7\u3001\u6574\u6570\u3001\u5c0f\u6570\u548c\u6307\u6570
^[-+][0-9]+\.[0-9]+[eE][-+]?[0-9]+$

2. \u5f3a\u5236\u7b26\u53f7\u3001\u6574\u6570\u3001\u5c0f\u6570\uff0c\u6ca1\u6709\u6307\u6570
^[-+][0-9]+\.[0-9]+$

3. \u53ef\u9009\u7b26\u53f7\uff0c\u5f3a\u5236\u6574\u6570\u3001\u5c0f\u6570\uff0c\u6ca1\u6709\u6307\u6570
^[-+]?[0-9]+\.[0-9]+$

4\u6216\u66f4\u591a\uff0c\u89c1\u4e0b\u6587\uff1a
http://blog.csdn.net/guaguastd/article/details/39184407

P.S.\uff1a\u4f8b\u5b50\u4e2d\u7684\u662f\u7b2c\u4e09\u79cd\u5199\u6cd5\u3002

4. \u6d4b\u8bd5\u7ed3\u679c\uff1a

你好!
给你个简单的方法,在2.7下好用↓
利用isinstance()函数,来判断一个对象是否是一个已知的类型:
lst
=
[]
isinstance(lst,
list)
True
isinstance(lst,
(int,
str,
list))
True
希望对你有所帮助,望采纳。

不用写正则表达式也行的,介绍你两种方法
第一种:将变量转换为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。
希望能对你有所帮助!

扩展阅读:javascript免费网站 ... python3.9官网 ... python3手机版下载官方 ... python3.7exe下载 ... python官网入口 ... python3.12.2下载 ... python3.8手机安装包 ... python3.8.2安装教程 ... python和python3.0的区别 ...

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