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)