当前位置: 首页 > article >正文

字符串统计(Python)

接收键盘任意录入,分别统计大小写字母、数字及其它字符数量,打印输出。


(笔记模板由python脚本于2024年11月02日 08:23:31创建,本篇笔记适合熟悉python字符串并懂得基本编程技法的coder翻阅)


【学习的细节是欢悦的历程】

  • Python 官网:https://www.python.org/

  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
    地址:https://lqpybook.readthedocs.io/


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


接收键盘任意录入
字符串统计
(统计大小写字母、数字及其它字符)


本文质量分:

97 97 97

本文地址: https://blog.csdn.net/m0_57158496/article/details/143445325

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ 字符串统计
    • 1、题目描述
    • 2、解题逻辑
    • 3、 代码实现
      • 3.1 变量统计
      • 3.2 sum(列表解析)
      • 3.3 sum(生成器解析)
      • 3.4 字典统计
    • 4、ai也是经常“犯错”
      • 4.1 遗漏信息
      • 4.2 表述“不清”
    • 5、完整源码(Python)


◆ 字符串统计


  我之前也写过一篇解“字符串统计”小题的学习笔记:

  1. 练习:字符串统计(坑:f‘string‘报错)
    地址:https://blog.csdn.net/m0_57158496/article/details/121723096
    浏览阅读:5.5k
    收藏:1 


1、题目描述


  • 题目描述截屏图片
    在这里插入图片描述
    1、编写函数,接收一个字符串,分别统计大写字母、小写字母、数字和其它字符的个数,并以元组形式返回结果。在主程序调用该函数并输出。

题目来源于 CSDN 问答社区提问《字符串统计》


  • 解题代码运行效果
    在这里插入图片描述



回页目录


2、解题逻辑


  • a. 一般采用变量计数器。为每个统计项设立变量初值置0,遍历字符串时累加相应变量。

  • b. 字典key替代统计变量,用dict.get方法辅助累加其值。dict结构数据,代码更紧凑,操作更顺畅,这是一般统计数据结构的“最佳方式”。


  • ai学伴总结“我的观点”
    在这里插入图片描述



回页目录


3、 代码实现


3.1 变量统计


  • 变量统计
    在这里插入图片描述

def char_statistics(text: str) -> None:
    upper_count = 0
    lower_count = 0
    number_count = 0
    other_count = 0

    for char in text:
        if char.isupper():
            upper_count += 1
        elif char.islower():
            lower_count += 1
        elif char.isdigit():
            number_count += 1
        else:
            other_count += 1

    print(f"Upper case letters: {upper_count}")
    print(f"Lower case letters: {lower_count}")
    print(f"Numbers: {number_count}")
    print(f"Other characters: {other_count}")

# 示例文本
sample_text = "Hello World! 12345"

# 调用函数进行统计
char_statistics(sample_text)

  ai是采用的“变量输出”,如要符题,只需将统计数据“组建”成tuple对象,修改输出语句就可以。如:


    # 前面代码保持不变
    keys = ('upper_count', 
            'lower_count', 
            'number_count', 
            'other_count')
    counter = [(k, v) for k,v in zip(keys, (upper_count, lower_count, number_count, other_count))] # 列表解析式解析成“键-值”对列表
    
    # 原print() 代码不变
    return tuple(counter) # 列表转换成元组返回

# 示例文本
sample_text = "Hello World! 12345"

# 调用函数进行统计
print(f"\n\n元组统计结果:\n{char_statistics(sample_text)}\n") # 以接收返回值的方式调用函数

  • 运行效果截屏图片
    在这里插入图片描述

3.2 sum(列表解析)


列表解析统计


    upper_count = sum([1 if char.isupper() else 0 for i in text])
    lower_count = sum([1 if char.islower() else 0 for i in text])
    number_count = sum([1 if char.isdigit() else 0 for i in text])
    other_count = len(text) - upper_count - lower_count - number_count


3.3 sum(生成器解析)


生成器解析统计


    upper_count = sum(1 for char in text if char.isupper())
    lower_count = sum(1 for char in text if char.islower())
    number_count = sum(1 for char in text if char.isdigit())
    other_count = len(text) - upper_count - lower_count - number_count

生成器解析,代码更简洁且少占用内存。


3.4 字典统计


  • 字典统计
    字典统计的代码脚本,请往后翻或者直接选择文章目录“完整源码”跳转。😋
    贴图



回页目录


4、ai也是经常“犯错”


  AI虽然精准,但它也跟“我们”一样,时常迷糊,时有前言不搭后语的情形。😋这是我们需要知悉的,智能的ai,不会“全对”!🧐


4.1 遗漏信息


  • 截屏图片
    在这里插入图片描述

4.2 表述“不清”


  • 截屏图片
    在这里插入图片描述



回页目录


5、完整源码(Python)

(源码较长,点此跳过源码)

#!/usr/bin/env python3


def char_count(s: str) -> tuple | dict:
    ''' 字符统计 '''
    counts = {} # 统计字典
    for char in s:
        if char.isupper():
            counts['upper'] = counts.get('upper', 0) + 1
        elif char.islower():
            counts['lower'] = counts.get('lower', 0) + 1
        elif char.isdigit():
            counts['number'] = counts.get('number', 0) + 1
        else:
            counts['other'] = counts.get('other', 0) + 1
    chars = tuple((k, v) for k,v in counts.items()) # 为达题目要求,特意返回统计数据元组
    return chars, counts # 直接返回字典是更便于明细列表输出

        
def main() -> None:
    ''' 主程序 '''
    text = input('\n\n请输入字符串:')
    chars, counter = char_count(text) # 调用模块函数统计字符
    # 分别格式化统计数据
    upper_str = f"大写字母:{counter.get('upper', 0):>2}个"
    lower_str = f"小写字母:{counter.get('lower', 0):>2}个"
    number_str = f"数字:{counter.get('number', 0):>2}个"
    other_str = f"其它字符:{counter.get('other', 0):>2}个"
    # 统筹输出(元组和明细)
    print(f"\n\n输出:\n\n统计元组:{chars}\n\n{'':-^42}\n\n{lower_str:>22}\n{upper_str:>22}\n{number_str:>24}\n{other_str:>22}\n\n{'':>16}共计{len(text)}个字符\n{'':-^42}")


if __name__ == '__main__':
    main()


  • ai学伴点评代码
    在这里插入图片描述

低版本python解释器函数返回联合类型示例


from typing import Dict, Tuple, Union

def char_count(s: str) -> Union[Tuple[Tuple[str, int]], Dict[str, int]]:
    # 函数体保持不变



回页首


上一篇:  Python中的字符串“不可改变。/可以改变?”(Python中,规定字符串是“不可变”类型,字符串方法可以“重写”字符串。Python最终让您明白,“字符串不可改变”)
下一篇: 



我的HOT博:

  本次共计收集 311 篇博文笔记信息,总阅读量43.82w。数据于2024年03月22日 00:50:22完成采集,用时6分2.71秒。阅读量不小于6.00k的有 7 7 7篇。

  • 001
    标题:让QQ群昵称色变的神奇代码
    (浏览阅读 5.9w )
    地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    点赞:25 收藏:86 评论:17
    摘要:让QQ昵称色变的神奇代码。
    首发:2022-01-18 19:15:08
    最后编辑:2022-01-20 07:56:47

  • 002
    标题:Python列表(list)反序(降序)的7种实现方式
    (浏览阅读 1.1w )
    地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    点赞:8 收藏:35 评论:8
    摘要:Python列表(list)反序(降序)的实现方式:原址反序,list.reverse()、list.sort();遍历,全数组遍历、1/2数组遍历;新生成列表,resersed()、sorted()、负步长切片[::-1]。
    首发:2022-12-11 23:54:15
    最后编辑:2023-03-20 18:13:55

  • 003
    标题:pandas 数据类型之 DataFrame
    (浏览阅读 9.7k )
    地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    点赞:7 收藏:36 
    摘要:pandas 数据类型之 DataFrame_panda dataframe。
    首发:2022-05-01 13:20:17
    最后编辑:2022-05-08 08:46:13

  • 004
    标题:个人信息提取(字符串)
    (浏览阅读 8.2k )
    地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    点赞:2 收藏:15 
    摘要:个人信息提取(字符串)_个人信息提取python。
    首发:2022-04-18 11:07:12
    最后编辑:2022-04-20 13:17:54

  • 005
    标题:Python字符串居中显示
    (浏览阅读 7.6k )
    地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    评论:1

  • 006
    标题:罗马数字转换器|罗马数字生成器
    (浏览阅读 7.5k )
    地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    摘要:罗马数字转换器|生成器。
    首发:2022-01-19 23:26:42
    最后编辑:2022-01-21 18:37:46

  • 007
    标题:回车符、换行符和回车换行符
    (浏览阅读 6.0k )
    地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    点赞:2 收藏:3 
    摘要:回车符、换行符和回车换行符_命令行回车符。
    首发:2022-02-24 13:10:02
    最后编辑:2022-02-25 20:07:40


推荐条件 阅读量突破6.00k
(更多热博,请点击蓝色文字跳转翻阅)

  • 截屏图片
    在这里插入图片描述
      (此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺“未过审”还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识“曾经”。2023-12-31)



回页首


老齐漫画头像

精品文章:

  • 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


◆ Python 入门指南【Python 3.6.3】


好文力荐:

  • 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯
  • 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代码编写规范
  • Python的docstring规范(说明文档的规范写法)


http://www.kler.cn/a/376407.html

相关文章:

  • Matlab实现蚁群算法求解旅行商优化问题(TSP)(理论+例子+程序)
  • k8s集群 ceph rbd 存储动态扩容
  • Blender进阶:贴图与UV
  • 架构师备考论文-论软件设计方法及其应用
  • CSS3新增长度单位(二)
  • 静态路由实现路由互通
  • 什么是 HTTP 代理?它如何工作?
  • Unity 6 来袭
  • 一个系列搞懂23种设计模式
  • 服务器与服务器之间文件上传下载
  • 基于java的移动端自动化测试 - appium-client api -DesiredCapabilities属性有哪些?
  • Mac 配置SourceTree集成云效
  • uniapp 使用 websocket
  • 从方言对话这枚“落子”,看AI手机“棋局”的尴尬赛点
  • Ansible 部署应用
  • 数据结构(Java)—— 认识泛型
  • 河南省教育厅办公室关于举办2024年河南省高等职业教育技能大赛的通知
  • Java Collection/Executor DelayedWorkQueue 总结
  • MMSegmentation测试阶段推理速度非常慢的一种可能原因
  • 【前端基础】HTML 基础
  • 一文带你弄懂thermal governor IPA
  • 为什么大家都在学数字孪生呢?
  • Keras 3 示例:开启深度学习之旅
  • 【前端基础】CSS基础
  • Unity性能优化(简略版)
  • 刘艳兵-DBA023-控制文件是Oracle 数据库用来查找数据库文件,控制文件包含以下哪些信息: