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

python 基础:句子缩写

n = int(input())
for _ in range(n):words = input().split()result = ""for word in words:result += word[0].upper()print(result)

知识点讲解

  1. input()函数
    • 用于从标准输入(通常是键盘)读取用户输入的内容。它返回的是字符串类型。例如在代码中,input()用于读取测试数据的组数n以及每一组的词组。
  2. 类型转换
    • int()函数用于将字符串转换为整数。在代码中,n = int(input())将从输入读取到的字符串类型的n转换为整数类型,以便后续进行循环控制。
  3. 循环结构
    • for _ in range(n):这里使用了for循环。range(n)会生成一个从 0 到n - 1的整数序列。_是一个占位符变量,当我们不需要使用循环变量本身时,可以使用它来代替常规的变量名。在这个循环中,它控制着读取和处理n组测试数据。
  4. 字符串的split()方法
    • words = input().split()split()方法用于将字符串按照指定的分隔符进行分割,默认分隔符是空格。在这个代码中,它将输入的词组按照空格分割成一个单词列表。例如,对于输入"ad dfa fgs"split()方法会将其分割成["ad", "dfa", "fgs"]
    • 在 Python 中,input().split(' ') 正常情况下不会把空格也分割出来 ,但如果出现这种情况,可能有以下原因:

      连续多个空格

      当输入中存在连续多个空格时,使用split(' ') ,如果没有特别处理,连续空格间就会产生空字符串元素。比如输入 "a b"ab间有两个空格 ),"a b".split(' ') 会得到 ['a', '', 'b'] ,中间的空字符串就是因为连续空格产生的。解决办法是使用不带参数的split() ,它会自动忽略连续的多个空格,如 "a b".split() 结果是 ['a', 'b'] ;或者对得到的列表进行过滤,去除空字符串元素,像 [i for i in "a b".split(' ') if i] ,结果也为 ['a', 'b'] 。

      输入内容存在特殊情况

      若输入的内容中存在一些特殊字符和空格混合的情况,而你期望只按空格分割单词,可能会出现误解。比如输入 "a\t b"ab间是制表符 ),"a\t b".split(' ') 不会分割,因为分隔符指定的是空格不是制表符;但如果用"a\t b".split() ,它会按空白字符(包括空格、制表符等 )分割,得到 ['a', 'b'] 。所以要明确输入内容特点,选择合适的分割方式。

  5. 字符串的索引
    • word[0]:在 Python 中,字符串可以通过索引来访问单个字符。索引从 0 开始,所以word[0]表示获取单词word的第一个字符。
  6. 字符串的upper()方法
    • word[0].upper()upper()方法用于将字符串中的所有字符转换为大写。在这里,将每个单词的第一个字符转换为大写。
  7. 字符串拼接
    • result += word[0].upper():在 Python 中,可以使用+=操作符进行字符串拼接。每次将转换为大写后的单词首字母拼接到result字符串中。
  8. print()函数
    • print(result):用于将结果输出到标准输出(通常是控制台)。在这个代码中,将每组测试数据处理后的大写首字母组合输出

在 Python 中进行大小写转换,常用以下几种方式:

一、使用内置字符串方法

  1. upper()方法:将字符串中的所有字符转换为大写。
    示例:
text = "hello, world!"
uppercase_text = text.upper()
print(uppercase_text) 
# 输出:HELLO, WORLD!
  1. lower()方法:把字符串中的所有字符转换为小写。
    示例:
text = "HELLO, WORLD!"
lowercase_text = text.lower()
print(lowercase_text) 
# 输出:hello, world!

  1. swapcase()方法:将字符串中的大写字母转换为小写,小写字母转换为大写。
    示例:
text = "Hello, World!"
swapped_text = text.swapcase()
print(swapped_text) 
# 输出:hELLO, wORLD!

  1. capitalize()方法:把字符串的第一个字符转换为大写,其余字符转换为小写。
    示例:
text = "hello, world!"
capitalized_text = text.capitalize()
print(capitalized_text) 
# 输出:Hello, world!
  1. title()方法:将字符串中每个单词的首字母转换为大写,其余字母为小写。
    示例:
text = "hello, world!"
titled_text = text.title()
print(titled_text) 
# 输出:Hello, World!

二、使用列表推导式

可以逐个转换字符串中的字符,然后拼接成新字符串。

  1. 转换为大写
text = "hello, world!"
uppercase_text = ''.join((char.upper() for char in text))
print(uppercase_text) 
# 输出:HELLO, WORLD!
  1. 转换为小写
text = "HELLO, WORLD!"
lowercase_text = ''.join((char.lower() for char in text))
print(lowercase_text) 
# 输出:hello, world!
  1. 大小写互换
text = "Hello, World!"
swapped_text = ''.join((char.swapcase() for char in text))
print(swapped_text) 
# 输出:hELLO, wORLD!

三、使用正则表达式(re模块)

借助正则表达式匹配字符并转换。

  1. 转换为大写
import re
text = "hello, world!"
uppercase_text = re.sub(r'(a-z)', lambda x: x.group(0).upper(), text)
print(uppercase_text) 
# 输出:HELLO, WORLD!
  1. 转换为小写
import re
text = "HELLO, WORLD!"
lowercase_text = re.sub(r'(A-Z)', lambda x: x.group(0).lower(), text)
print(lowercase_text) 
# 输出:hello, world!
  1. 大小写互换
import re
text = "Hello, World!"
swapped_text = re.sub(r'(a-zA-Z)', lambda x: x.group(0).swapcase(), text)
print(swapped_text) 
# 输出:hELLO, wORLD!

四、处理多语言字符串(结合locale模块 )

对于一些语言有特殊大小写转换规则的情况,可使用locale模块。

import locale
# 设置区域为德语
locale.setlocale(locale.LC_ALL, 'de_DE')
text = "Straße"
uppercase_text = text.upper()
print(uppercase_text) 
# 输出:STRASSE

相关文章:

python 基础:句子缩写

n int(input()) for _ in range(n):words input().split()result ""for word in words:result word[0].upper()print(result)知识点讲解 input()函数 用于从标准输入(通常是键盘)读取用户输入的内容。它返回的是字符串类型。例如在代码中…...

Ruoyi-vue plus 5.2.2 flowble 结束节点异常错误

因业务要求, 我在结束节点的结束事件中,制作了一个归档的事件,来执行一个业务。 始终都会报错, 错误信息 ${archivTemplateListener} did not resolve to an implementation of interface org.flowable.engine.delegate.Execution…...

Sublime Text使用教程(用Sublime Text编写C语言程序)

Sublime Text 是一款当下非常流行的文本编辑器,其功能强大(提供有众多的插件)、界面简洁、还支持跨平台使用(包括 Mac OS X、Linux 和 Windows)。 在程序员眼中,Sublime Text 不仅仅是一个文本编辑器&…...

【1】k8s集群管理系列--包应用管理器之helm

一、helm概述 Helm核心是模板,即模板化K8s YAML文件。 通过模板实现Chart高效复用,当部署多个应用时,可以将差异化的字段进行模板化,在部署时使用-f或 者–set动态覆盖默认值,从而适配多个应用 helm工作流程&#xf…...

【书籍】DeepSeek谈《持续交付2.0》

目录 一、深入理解1. 核心理念升级:从"自动化"到"双环模型"2. 数字化转型的五大核心能力3. 关键实践与案例4. 组织与文化变革5. 与其它框架的关系6. 实际应用建议 二、对于开发实习生的帮助1. 立刻提升你的代码交付质量(技术验证环实…...

Mysql表的操作(2)

1.去重 select distinct 列名 from 表名 2.查询时排序 select 列名 from 表名 order by 列名 asc/desc; 不影响数据库里面的数据 错误样例 : 但结果却有点出乎意料了~为什么会失败呢? 其实这是因为书写的形式不对,如果带了引号,…...

智能物联网网关策略部署

实训背景 某智慧工厂需部署物联网网关,实现以下工业级安全管控需求: 设备准入控制:仅允许注册MAC地址的传感器接入(白名单:AA:BB:CC:DD:EE:FF)。协议合规性:禁止非Modbus TCP(端口…...

神经网络语言模型与统计语言模型的比较

神经网络语言模型(Neural Language Models, NLMs)与统计语言模型(Statistical Language Models, SLMs)是自然语言处理(NLP)中两类核心的语言建模方法,其核心差异体现在建模方式、表示能力、数据…...

Java学习总结-线程池

线程池是什么? 线程池就是一个可以复用线程的技术。 假若不用线程池的问题:创建新线程开销很大,不能来一个任务就就创建一个新线程。 如何创建线程池对象? 方法一:使用ExecutorService的实现类ThreadPoolExecutor创…...

Android 中绕过hwbinder 实现跨模块对audio 的HAL调用

需求 Audio 模块中专门为 TV 产品添加了一些代码,需要在 hdmi 的 HAL 代码中进行调用以完成某些功能。 解决方法 首先将 hdmi HAL 要调用的 audio 接口函数所在的 .so 链接到最基本的 lib.primay.amlogic.so 中(其它平台上这个 .so 文件的名字也可能是…...

【DB2】事务日志满/归档占用较大问题处理记录

某DB2环境经常报错The active log is full and is held by...,并且归档磁盘占用较大 事务日志满 事务日志满可以理解为Oracle的redo追尾,即业务写入量大于redo刷盘速度,这时候其他SQL会陷入等待,容易造成性能问题 一般由两方面原…...

基于CNN-BiLSTM-GRU的深度Q网络(Deep Q-Network,DQN)求解移动机器人路径规划,MATLAB代码

一、深度Q网络(Deep Q-Network,DQN)介绍 1、背景与动机 深度Q网络(DQN)是深度强化学习领域的里程碑算法,由DeepMind于2013年提出。它首次在 Atari 2600 游戏上实现了超越人类的表现,解决了传统…...

CVE-2025-29927 Next.js 中间件鉴权绕过漏洞

Next.js Next.js 是一个基于 React 的现代 Web 开发框架,用来构建高性能、可扩展的 Web 应用和网站。 CVE-2025-29927 Next.js 中间件鉴权绕过漏洞 CVE-2025-29927是Next.js框架中的一个授权绕过漏洞,允许攻击者通过特制的HTTP请求绕过在中间件中执行…...

数据结构(五)——AVL树(平衡二叉搜索树)

目录 前言 AVL树概念 AVL树的定义 AVL树的插入 右旋转 左旋转 左右双旋 右左双旋 插入代码如下所示 AVL树的查找 AVL树的遍历 AVL树的节点个数以及高度 判断平衡 AVL树代码如下所示 小结 前言 前面我们在数据结构中介绍了二叉搜索树,其中提到了二叉搜…...

C++类型转换详解

目录 一、内置 转 内置 二、内置 转 自定义 三、自定义 转 内置 四、自定义 转 自定义 五、类型转换规范化 1.static_case 2.reinterpret_cast 3.const_cast 4.dynamic_cast 六、RTTI 一、内置 转 内置 C兼容C语言,在内置类型之间转换规则和C语言一样的&am…...

【前端】【React】性能优化三件套useCallback,useMemo,React.memo

一、总览:性能优化三件套 useCallback(fn, deps):缓存函数,避免每次渲染都新建函数。useMemo(fn, deps):缓存值(计算结果),避免重复执行计算。React.memo(Component):缓存组件的渲染…...

excel数据透视表大纲格式改为表格格式

现有这样一个数据透视表: 想要把他变成这样的表格格式: 操作步骤: 第一步: 效果: 第二步: 效果: 去掉分类汇总: 效果: 去掉展开/折叠按钮: 操作方式&#xf…...

pycharm中安装Charm-Crypto

一、安装依赖 1、安装gcc、make、perl sudo apt-get install gcc sudo apt-get install make sudo apt-get install perl #检查版本 gcc -v make -v perl -v 2、安装依赖库m4、flex、bison(如果前面安装过pypbc的话,应该已经装过这些包了) sudo apt-get update sudo apt…...

天梯集训+代码打卡笔记整理

1.着色问题 直接标注哪些行和列是被标注过的&#xff0c;安全格子的数量就是未标注的行*列 #include <bits/stdc.h> using namespace std;const int N 1e510; int hang[N],lie[N];int main(){int n,m;cin>>n>>m;int q;cin>>q;while(q--){int x,y;ci…...

python基础语法:缩进规则

Python 的缩进规则是其语法的重要组成部分&#xff0c;它通过缩进来表示代码块的层次结构&#xff0c;而不是像其他语言&#xff08;如 C 或 Java&#xff09;那样使用大括号 {}。以下是 Python 缩进规则的详细说明&#xff1a; 1. 缩进的基本规则 代码块的标识&#xff1a;Pyt…...

支付系统设计入门:核心账户体系架构

&#x1f449;目录 1 账户记账理论 2 账户设计 3 账户性能问题 4 账户核心架构 5 小结 第三方支付作为中立的第三方&#xff0c;截断了用户和商户的资金流&#xff0c;资金先从用户账户转移到第三方支付平台账户&#xff0c;得到双方确认后再从支付平台账户转移到商户账户。 支…...

[LevelDB]Block系统内幕解析-元数据块(Meta Block)元数据索引块(MetaIndex Block)索引块(Index Block)

本文内容组织形式 Block的基本信息作用示意图举例说明 源码解析Footer格式写入&读取编码&解码 元数据块&#xff08;Meta Block&#xff09;构建&读取 元数据索引块构建&读取 索引块定义构建&读取核心方法-FindShortestSeparator&FindShortSuccessor作…...

leetcode:905. 按奇偶排序数组(python3解法)

难度&#xff1a;简单 给你一个整数数组 nums&#xff0c;将 nums 中的的所有偶数元素移动到数组的前面&#xff0c;后跟所有奇数元素。 返回满足此条件的 任一数组 作为答案。 示例 1&#xff1a; 输入&#xff1a;nums [3,1,2,4] 输出&#xff1a;[2,4,3,1] 解释&#xff1a…...

抖音视频下载工具

抖音视频下载工具 功能介绍 这是一个基于Python开发的抖音视频下载工具&#xff0c;可以方便地下载抖音平台上的视频内容。 主要特点 支持无水印视频下载自动提取视频标题作为文件名显示下载进度条支持自动重试机制支持调试模式 使用要求 Python 3.10Chrome浏览器必要的P…...

断言与反射——以golang为例

断言 x.(T) 检查x的动态类型是否是T&#xff0c;其中x必须是接口值。 简单使用 func main() {var x interface{}x 100value1, ok : x.(int)if ok {fmt.Println(value1)}value2, ok : x.(string)if ok {//未打印fmt.Println(value2)} }需要注意如果不接受第二个参数就是OK,这…...

【家政平台开发(27)】商务部信用对接、法律咨询与视频面试功能开发全攻略

本【家政平台开发】专栏聚焦家政平台从 0 到 1 的全流程打造。从前期需求分析,剖析家政行业现状、挖掘用户需求与梳理功能要点,到系统设计阶段的架构选型、数据库构建,再到开发阶段各模块逐一实现。涵盖移动与 PC 端设计、接口开发及性能优化,测试阶段多维度保障平台质量,…...

【数据结构】排序算法(下篇·开端)·深剖数据难点

前引&#xff1a;前面我们通过层层学习&#xff0c;了解了Hoare大佬的排序精髓&#xff0c;今天我们学习的东西可能稍微有点难度&#xff0c;因此我们必须学会思想&#xff0c;我很受感慨&#xff0c;借此分享一下&#xff1a;【用1520分钟去调试】&#xff0c;如果我们遇到了任…...

山东大学软件学院创新项目实训开发日志(9)之测试前后端连接

在正式开始前后端功能开发前&#xff0c;在队友的帮助下&#xff0c;成功完成了前后端测试连接&#xff1a; 首先在后端编写一个测试相应程序&#xff1a; 然后在前端创建vue 并且在index.js中添加一下元素&#xff1a; 然后进行测试&#xff0c;测试成功&#xff1a; 后续可…...

【VUE3】Eslint 与 Prettier 的配置

目录 0 前言 1 VSCode 中的 Eslint 与 prettier 插件 2 两种方案 3 eslint.config.js 4 eslint-plugin-prettier 插件 5 eslint-config-prettier 插件 6 安装插件命令 7 其他配置 8 参考资料 0 前言 黑马程序员视频地址&#xff1a;160-Vue3大事件项目-ESlint配合P…...

蓝桥杯C++组算法知识点整理 · 考前突击(上)【小白适用】

【背景说明】本文的作者是一名算法竞赛小白&#xff0c;在第一次参加蓝桥杯之前希望整理一下自己会了哪些算法&#xff0c;于是有了本文的诞生。分享在这里也希望与众多学子共勉。如果时间允许的话&#xff0c;这一系列会分为上中下三部分和大家见面&#xff0c;祝大家竞赛顺利…...