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

字符串统计(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 = 0lower_count = 0number_count = 0other_count = 0for char in text:if char.isupper():upper_count += 1elif char.islower():lower_count += 1elif char.isdigit():number_count += 1else:other_count += 1print(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 python3def char_count(s: str) -> tuple | dict:''' 字符统计 '''counts = {} # 统计字典for char in s:if char.isupper():counts['upper'] = counts.get('upper', 0) + 1elif char.islower():counts['lower'] = counts.get('lower', 0) + 1elif char.isdigit():counts['number'] = counts.get('number', 0) + 1else:counts['other'] = counts.get('other', 0) + 1chars = 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, Uniondef 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规范(说明文档的规范写法)

相关文章:

字符串统计(Python)

接收键盘任意录入,分别统计大小写字母、数字及其它字符数量,打印输出。 (笔记模板由python脚本于2024年11月02日 08:23:31创建,本篇笔记适合熟悉python字符串并懂得基本编程技法的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xf…...

NVR小程序接入平台/设备EasyNVR多个NVR同时管理视频监控新选择

在数字化转型的浪潮中,视频监控作为安防领域的核心组成部分,正经历着前所未有的技术革新。随着技术的不断进步和应用场景的不断拓展,视频监控系统的兼容性、稳定性以及安全性成为了用户关注的焦点。NVR小程序接入平台/设备EasyNVR&#xff0c…...

怎样能把图片做压缩处理?学会4款在线工具高效压缩图片

随着现在图片质量不断的提高,导致图片的大小也越来越大,很多的网上平台只能上传比较小的图片,那么可以使用压缩图片或者图片改尺寸的方式来修改图片大小,那么图片压缩的操作技巧是什么样的呢?本文将带大家了解4个操作简…...

ZooKeeper 客户端API操作

文章目录 一、节点信息1、创建节点2、获取子节点并监听节点变化3、判断节点是否存在4、客户端向服务端写入数据写入请求直接发给 Leader 节点写入请求直接发给 follow 节点 二、服务器动态上下线监听1、监听过程2、代码 三、分布式锁1、什么是分布式锁?2、Curator 框架实现分布…...

常用滤波算法(一)-限幅滤波法

文章目录 一、限幅滤波法原理二、C语言实现限幅滤波法三、代码解析定义限制值:限幅滤波函数:模拟获取新数据:主函数: 四、结论 限幅滤波法 限幅滤波法,作为一种简单而有效的滤波方法,通过限制信号的幅值范围…...

江协科技STM32学习- P33 实验-软件I2C读写MPU6050

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…...

BusHound工具的使用-调试USB

12 1.Capture(捕捉按钮)、2.Save(保存按钮)、3.Setting(设置要监听的,输入输出)、4.Device(选择要监听的设备)、5.Help(帮助按钮)、6.Exit(退出按钮)。 一、Capture页面 1.Device 表示是29设备端口,打印机。 2.Phase,各类协议&#xff0c…...

Hadoop生态圈框架部署(四)- Hadoop完全分布式部署

文章目录 前言一、Hadoop完全分布式部署(手动部署)1. 下载hadoop2. 上传安装包2. 解压hadoop安装包3. 配置hadoop配置文件3.1 虚拟机hadoop1修改hadoop配置文件3.1.1 修改 hadoop-env.sh 配置文件3.3.2 修改 core-site.xml 配置文件3.3.3 修改 hdfs-site…...

Spring Boot 与 Vue 共铸卓越采购管理新平台

作者介绍:✌️大厂全栈码农|毕设实战开发,专注于大学生项目实战开发、讲解和毕业答疑辅导。 🍅获取源码联系方式请查看文末🍅 推荐订阅精彩专栏 👇🏻 避免错过下次更新 Springboot项目精选实战案例 更多项目…...

leetcode3. Longest Substring Without Repeating Characters

Given a string s, find the length of the longest substring without repeating characters. Example 1: Input: s “abcabcbb” Output: 3 Explanation: The answer is “abc”, with the length of 3. Example 2: Input: s “bbbbb” Output: 1 Explanation: The ans…...

Mongodb使用视图连接两个集合

您可以使用 $lookup 为两个集合创建一个视图,然后对该视图运行查询。应用程序可以查询视图,而无需构建或维护复杂的管道。 例子 创建两个样本集合 inventory 和 orders: db.inventory.insertMany( [{ prodId: 100, price: 20, quantity: 1…...

SIP是什么?

SIP(Session Initiation Protocol,会话启动协议)是一个用于建立、更改和终止多媒体会话的应用层控制协议,其中的会话可以是IP电话、多媒体会话或多媒体会议。 SIP是IETF多媒体数据和控制体系结构的核心协议(最新RFC文档…...

Day 39 || 01背包、416. 分割等和子集

01背包 题目链接:卡码网第46题 二维解题思路:需要建立一个i行k列的dp数组,i表示每个物品,k代表容量,初始化数组子一列为0,第一行从背包开始能够放入起始为价值,其他都为0。for双循环先背包后物…...

调用detr-resnet-50进行目标检测

from transformers import DetrImageProcessor, DetrForObjectDetection import torch from PIL import Imageimage = Image.open("1.jpg") torch.set_default_device("cuda"...

Chromium 中chrome.fontSettings扩展接口定义c++

一、chrome.fontSettings 使用 chrome.fontSettings API 管理 Chrome 的字体设置。 权限 fontSettings 要使用 Font Settings API,您必须在扩展程序中声明 "fontSettings" 权限 清单。例如: {"name": "My Font Settings E…...

在Unity游戏开发在面试时会面试哪些内容?

1、请描述游戏动画有几种,以及其原理。 关键帧动画:每一帧动画序列当中包含了顶点的空间位置信息以及改变量,然后通过插值运算,得出动画效果。选中某一游戏对象,创建animation,添加属性Transform&#xff0…...

刘艳兵-DBA022-以下关于Oracle半连接的描述,哪些是正确的?

以下关于Oracle半连接的描述,哪些是正确的? A SQL中的NOT EXISTS子查询,通常会被转换为对应的半连接。 B SQL中的IN子查询,通常会被转换为对应的半连接。 C 半连接会去重 D SQL中的EXISTS子查询,通常会被转…...

人工智能与伦理:我们应该如何平衡科技与人性?

内容概要 在这个瞬息万变的时代,人工智能的迅猛发展让我们面对前所未有的伦理困境。科技进步带来了便利,但同时也亟需我们反思如何对待人性。尤其是在实现算法透明性时,我们要确保每一个决策背后都能被理解与追溯,这不仅是对技术…...

CRON组件一个复杂的一个简单的

CRON组件一个复杂的一个简单的 一个是复杂点的一个是简单点。 1.以简单的为例使用&#xff1a; 父组件 import CronSimple from "/views/xxx/components/cron-simple/index.vue";components: {CronSimple}<el-dialog title"调度CRON"v-if"cronV…...

自定义日志打成jar包引入项目后不生效

背景&#xff1a;写了一个请求响应日志包&#xff0c;打包后在另一个项目使用pom引入后不生效 package com.example.qqllog.aspect;import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean;…...

机器学习笔记【Week7】

一、SVM的动机&#xff1a;大间隔分类器 1、逻辑回归回顾 假设函数为 sigmoid 函数&#xff1a; h θ ( x ) 1 1 e − θ T x h_\theta(x) \frac{1}{1 e^{-\theta^Tx}} hθ​(x)1e−θTx1​ 分类依据是 h θ ( x ) ≥ 0.5 h_\theta(x) \geq 0.5 hθ​(x)≥0.5 为正类&a…...

Mac 双系统

准备——Windows10 ISO文件下载 下载地址&#xff1a;https://msdn.itellyou.cn 操作系统 Win10-1903镜像 复制链接迅雷下载 第一步——查看系统磁盘剩余空间 打开“启动台”找到“其他”文件夹&#xff0c;打开“磁盘工具”&#xff08;剩余空间要大于40GB&#xff09; 第二…...

使用 Ansible 在 Windows 服务器上安装 SSL 证书

在本教程中&#xff0c;我将向您展示如何使用 Ansible 在 Windows 服务器上安装 SSL 证书。使用 Ansible 自动化 SSL 证书安装过程可以提高 IT 运营的效率、一致性和协作性。我将介绍以下步骤&#xff1a; 将 SSL 证书文件复制到服务器将 PFX 证书导入指定的存储区获取导入的证…...

1.1Nodejs和浏览器中的二进制处理

Buffer 在 Node.js 中&#xff0c;Buffer 类用于处理二进制数据。由于 JavaScript 在浏览器环境中主要用于处理字符串和数字等类型的数据&#xff0c;对二进制数据的处理能力较弱&#xff0c;因此 Node.js 引入了 Buffer 类来弥补这一不足&#xff0c;特别是在处理文件系统操作…...

如何使用k8s安装redis呢

在Kubernetes (k8s) 上安装Redis 在Kubernetes上安装Redis有几种方法&#xff0c;下面我将介绍两种常见的方式&#xff1a;使用StatefulSet直接部署和使用Helm chart部署。 一、安装redis 1.1 拉去ARM镜像&#xff08;7.4.2&#xff09; docker pull registry.cn-hangzhou.ali…...

第R9周:阿尔茨海默病诊断(优化特征选择版)

文章目录 1. 导入数据2. 数据处理2.1 患病占比2.2 相关性分析2.3 年龄与患病探究 3. 特征选择4. 构建数据集4.1 数据集划分与标准化4.2 构建加载 5. 构建模型6. 模型训练6.1 构建训练函数6.2 构建测试函数6.3 设置超参数 7. 模型训练8. 模型评估8.1 结果图 8.2 混淆矩阵9. 总结…...

Python训练第四十三天

DAY 43 复习日 作业&#xff1a; kaggle找到一个图像数据集&#xff0c;用cnn网络进行训练并且用grad-cam做可视化 进阶&#xff1a;并拆分成多个文件 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms, models …...

Git仓库的创建

Git服务器准备 假设Git所在服务器为Ubuntu系统&#xff0c;IP地址10.17.1.5。 一. 准备运行git服务的git用户&#xff0c;这里用户名就直接设定为git。 1. 创建一个git用户组&#xff0c;并创建git用户。 sudo groupadd git sudo useradd git -g git 2. 创建git用户目录&…...

DDD架构实战 领域层 事件驱动

目录 核心实现&#xff1a; 这种实现方式的优势&#xff1a; 在实际项目中&#xff0c;你可能需要&#xff1a; 事件驱动往往是在一个微服务内部实现的 领域时间是DDD架构中比较常见的概念 在领域层内部的一个模型更改了状态或者发生了一些行为 向外发送一些通知 这些通…...

bug 记录 - 使用 el-dialog 的 before-close 的坑

需求说明 弹窗中内嵌一个 form 表单 原始代码 <script setup lang"ts"> import { reactive, ref } from "vue" import type { FormRules } from element-plus const ruleFormRef ref() interface RuleForm {name: stringregion: number | null } …...