• python经典百题之统计字符数


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

    方法一:

    1. str_input = input("请输入一行字符:")
    2. count_letter, count_space, count_digits, count_other = 0, 0, 0, 0
    3. for char in str_input:
    4. if char.isalpha():
    5. count_letter += 1
    6. elif char.isspace():
    7. count_space += 1
    8. elif char.isdigit():
    9. count_digits += 1
    10. else:
    11. count_other += 1
    12. print("英文字母个数为:", count_letter)
    13. print("空格个数为:", count_space)
    14. print("数字个数为:", count_digits)
    15. print("其他字符个数为:", count_other)

    思路:使用for循环遍历字符串中的每一个字符,判断其属于英文字母、空格、数字还是其他字符,并记录相应个数。最后输出结果。

    优点:简单易懂,代码量较少。

    缺点:if-elif语句较多,代码可读性较差。

    方法二:

    1. str_input = input("请输入一行字符:")
    2. count_letter = sum(1 for char in str_input if char.isalpha())
    3. count_space = sum(1 for char in str_input if char.isspace())
    4. count_digits = sum(1 for char in str_input if char.isdigit())
    5. count_other = len(str_input) - count_letter - count_space - count_digits
    6. print("英文字母个数为:", count_letter)
    7. print("空格个数为:", count_space)
    8. print("数字个数为:", count_digits)
    9. print("其他字符个数为:", count_other)

    思路:使用生成器表达式与sum函数,将判断字符属于哪一类的过程集成到一行代码中,实现代码简洁化。

    优点:代码量较少,可读性较好。

    缺点:生成器表达式嵌套在sum函数中,可读性稍弱一些。

    方法三:

    1. from collections import Counter
    2. str_input = input("请输入一行字符:")
    3. count_dict = Counter(str_input)
    4. count_letter = count_dict.get("{}".format(chr(10))) - 1 # 减去回车符的个数
    5. count_space = count_dict.get(" ")
    6. count_digits = sum(1 for key in count_dict if key.isdigit())
    7. count_other = len(str_input) - count_letter - count_space - count_digits
    8. print("英文字母个数为:", count_letter)
    9. print("空格个数为:", count_space)
    10. print("数字个数为:", count_digits)
    11. print("其他字符个数为:", count_other)

    思路:使用Python标准库中的Counter计数器,将字符串中所有字符及其出现次数记录下来,然后通过字典的get方法获取英文字母、空格、数字及其他字符的数量。

    优点:代码简洁,可读性较好。

    缺点:需要导入collections库,如果不熟悉该库,理解起来可能较困难。

    综上所述,三种方法都能实现统计英文字母、空格、数字和其他字符的个数,具体选择哪一种方法,主要取决于项目实际情况和个人喜好。

  • 相关阅读:
    风控——利用决策树挖掘策略规则
    关于安卓jsbridge的使用
    谷歌的SRE和开发是如何合作的
    MindFusion.Diagramming for ASP.NET MVC 4.2 Crack
    朗强:紧跟时代步伐!HDMI分布式矩阵可以通过手机来控制!
    Redis+Caffeine两级缓存,让访问速度纵享丝滑
    Linux_C_入门篇学习笔记
    【编程题】【Scratch四级】2022.06 判断闰年
    技术干货 | 基于 MindSpore 实现图像分割之豪斯多夫距离
    【Linux 命令行参数解析函数getopt()】原理及直白理解
  • 原文地址:https://blog.csdn.net/yechuanhui/article/details/132900123