python 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
一、参考解法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
s = input ( '请输入字符串:' ) dic = { 'letter' : 0 , 'integer' : 0 , 'space' : 0 , 'other' : 0 } for i in s: if i > 'a' and i< 'z' or i> 'A' and i< 'Z' : dic[ 'letter' ] + = 1 elif i in '0123456789' : dic[ 'integer' ] + = 1 elif i = = ' ' : dic[ 'space' ] + = 1 else : dic[ 'other' ] + = 1 print ( '统计字符串:' ,s) print (dic) print ( '------------显示结果2---------------' ) for i in dic: print ( '%s=' % i,dic[i]) print ( '------------显示结果3---------------' ) for key,value in dic.items(): print ( '%s=' % key,value) |
二、参考解法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
tmpStr = input ( '请输入字符串:' ) alphaNum = 0 numbers = 0 spaceNum = 0 otherNum = 0 for i in tmpStr: if i.isalpha(): alphaNum + = 1 elif i.isnumeric(): numbers + = 1 elif i.isspace(): spaceNum + = 1 else : otherNum + = 1 print ( '字母=%d' % alphaNum) print ( '数字=%d' % numbers) print ( '空格=%d' % spaceNum) print ( '其他=%d' % otherNum) |
三、参考解法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
InPut = input ( '请输入字符串:' ) letters = [ ] spaces = [ ] digits = [ ] others = [ ] for i in iter ( InPut ): if i.isalpha(): letters.append(i) elif i.isspace(): spaces.append(i) elif i.isdigit(): digits.append(i) else : others.append(i) print ( ''' 字母: {}, 个数: {} 空格: {}, 个数: {} 数字: {}, 个数: {} 其他: {}, 个数: {}''' \ . format (letters, len (letters), spaces, len (spaces), digits, len (digits),others, len (others))) |
四、参考解法:
使用正则表达式 re.findall()
import re
s = input('请输入一串字符:')
char=re.findall(r'[a-zA-Z]',s)#以列表类型返回全部能匹配的子串
num=re.findall(r'[0-9]',s)
blank=re.findall(r' ',s)
chi=re.findall(r'[\u4E00-\u9FFF]',s)#汉字的Unicode编码范围
other = len(s)-len(char)-len(num)-len(blank)-len(chi)
print('字母',len(char),'\n数字',len(num),'\n空格',len(blank),'\n中文',len(chi),'\n其他',other)
五、参考解法:
使用正则表达式 re.match()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import re def splitFunc( ): tmpStr = input( '请输入字符串:' ) charNum = 0 digNum = 0 spaceNum = 0 otherNum = 0 for i in range(len(tmpStr)): if re.match( '[a-zA-Z]' ,tmpStr[i]): charNum +=1 elif re.match( '\d' ,tmpStr[i]): digNum +=1 elif re.match( '\s' ,tmpStr[i]): spaceNum +=1 else : otherNum +=1 print( '字符:' ,charNum) print( '数字:' ,digNum) print( '空格:' ,spaceNum) print( '其他:' ,otherNum) splitFunc() |