代码改变世界

python基础练习题(题目 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数)

2021-06-07 21:57  第二个卿老师  阅读(2579)  评论(0编辑  收藏  举报

day10

---------------------------------------------------------------

实例017:字符串构成

题目 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

分析:看看string模块的使用

str.isalpha
如果字符串中至少有一个字符且所有字符均为字母则返回真值,否则返回假值。
str.isspace
如果字符串中至少有一个字符且所有字符均为空白字符则返回真值,否则返回假值。
str.isdigit
如果字符串中至少有一个字符且所有字符均为数字字符则返回真值,否则返回假值。

 问题不大,直接上答案吧

 1 string=input("输入字符串:")
 2 alp=0
 3 num=0
 4 spa=0
 5 oth=0
 6 for i in range(len(string)):
 7     if string[i].isspace():
 8         spa+=1
 9     elif string[i].isdigit():
10         num+=1
11     elif string[i].isalpha():
12         alp+=1
13     else:
14         oth+=1
15 print('space: ',spa)
16 print('digit: ',num)
17 print('alpha: ',alp)
18 print('other: ',oth)

试了下不用range()函数也可以,目前没发现有什么问题

 1 string = input("请输入字符串:")
 2 alp=0
 3 num=0
 4 spa=0
 5 oth=0
 6 for i in string:
 7     if i.isspace():
 8         spa+=1
 9     elif i.isdigit():
10         num+=1
11     elif i.isalpha():
12         alp+=1
13     else:
14         oth+=1
15 print('space: ',spa)
16 print('digit: ',num)
17 print('alpha: ',alp)
18 print('other: ',oth)

来一个加强版的,采用正则的re.findall()

1 import re
2 
3 s = input('请输入一串字符:')
4 char=re.findall(r'[a-zA-Z]',s)#以列表类型返回全部能匹配的子串
5 num=re.findall(r'[0-9]',s)
6 blank=re.findall(r' ',s)
7 chi=re.findall(r'[\u4E00-\u9FFF]',s)#汉字的Unicode编码范围
8 other = len(s)-len(char)-len(num)-len(blank)-len(chi)
9 print('字母',len(char),'\n数字',len(num),'\n空格',len(blank),'\n中文',len(chi),'\n其他',other)