智一面的面试题提供python的测试题
使用地址:http://www.gtalent.cn/exam/interview?token=906315a76b5c14231889351088713f76

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

解法1 常规解法
程序分析:利用ASCII码进行匹配

程序源码

ss = str(input("输入一行字符:"))
letters = 0  #统计英文字母个数
space = 0  #统计数字个数
digit = 0  #统计空格个数
others = 0  #统计其他字符
for i in range(len(ss)):   #利用字符在ASCII码中的位置逐个统计
    if("0" <= ss[i] <= "9"):
        digit += 1
    elif("A" <= ss[i] <= "Z" or "a" <= ss[i] <= "z"):
        letters += 1
    elif(ss[i] == " "):
        space += 1
others = len(ss) - letters - space - digit
print("字母数量 = %d,数字数量 = %d,空格数量 = %d,其它字符数量 = %d"%(letters,digit,space,others))
运行结果

 

解法2 字符函数
程序分析:利用字符自带的函数isalpha、isspace、isdigit进行判断

程序源码

ss = input('请输入一个字符串:\n')
letters = 0
space = 0
digit = 0
others = 0
for c in ss:
    if c.isalpha():
        letters += 1
    elif c.isspace():
        space += 1
    elif c.isdigit():
        digit += 1
    else:
        others += 1
print ('字母数量 = %d,空格数量 = %d,数字数量 = %d,其它字符数量 = %d' % (letters,space,digit,others))
运行结果

 

解法3 正则表达式
程序分析:利用正则表达式,还可以统计中文汉字;上面两种方法是不能统计汉字

程序源码

import re
ss = input('输入一串字符:')
char = re.findall(r'[a-zA-Z]',ss)
num = re.findall(r'[0-9]',ss)
blank = re.findall(r' ',ss)
chi = re.findall(r'[\u4E00-\u9FFF]',ss)
other = len(ss)-len(char)-len(num)-len(blank)-len(chi)
print("字母:", len(char),",数字:", len(num),",空格:",len(blank),",中文:",len(chi),",其他:",other)
运行结果

学完以上三种方法,你还会觉得统计字符的数量难吗?

还有更多其他的解法,欢迎一起交流学习
————————————————
我们的python技术交流群:941108876
智一面的面试题提供python的测试题
使用地址:http://www.gtalent.cn/exam/interview?token=364151fab9fb6e1b468f50b4d83afd42