python 基础:句子缩写

news2025/4/18 21:23:24

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2332417.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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…

Mysql表的操作(2)

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

智能物联网网关策略部署

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

Java学习总结-线程池

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

基于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…

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

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

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

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…

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

&#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…

断言与反射——以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,这…

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

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

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

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

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

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

springboot调用python文件,python文件使用其他dat文件,适配windows和linux,以及docker环境的方案

介绍 后台是用springboot技术&#xff0c;其他同事做的算法是python&#xff0c;现在的需求是springboot调用python&#xff0c;python又需要调用其他的数据文件&#xff0c;比如dat文件&#xff0c;这个文件是app通过蓝牙获取智能戒指数据以后&#xff0c;保存到后台&#xf…