Python | 句子缩写

  • 字符串大小的比较
  • Unicode码值

类似于asc|| 码

小写字母从 'a' 到 'z' 对应的 Unicode 码值是从 97 到 122,而大写字母从 'A' 到 'Z' 对应的 Unicode 码值是从 65 到 90, 大小写字母之间的差值为32,所以可以通过数学运算将小写字符减去32后转换为大写字符。

  • 字符的大小写判定和转换

那如何判定字符是不是小写字符呢? Python提供了对应的方法islower()用于检查字符串中的字符是否都是小写字母,因此可以使用s[0]获取第一位字符,然后检查是否是小写字母。

转换成大写字符可以使用upper()方法,用于将字符串中的所有字符转换为大写字母。

除了上面两个方法外,isupper()用于检查字符串是否全部由大写字母组成,lower()方法将字符串中的所有字母转换为小写。

python 复制代码
#如果首字母是小写,转换成大写
if s[0].islower():
    #将之转换成大写,拼接在result里
    result += s[0].upper()
else:
    #如果是大写,直接拼接在result中
    result += s[0]

然后从 s 的第二个字符开始遍历到倒数第二个字符(最后一个字符肯定不是一个单词,不需要拼接)。在循环中,检查当前字符是否为空格,并且下一个字符不是空格(这是为了跳过单词之间的多个空格),如果满足条件,则说明遇到了一个新的单词,下一个字符是这个单词的首字母,然后将下一个字符经过处理后添加到 result 中。

python 复制代码
#遍历整个字符串,从索引1遍历到索引len(s) - 1,即最后一位字符(不包括该字符)
for i in range(1, len(s) - 1):
    #如果当前字符是空格,下一个字符不是空格,说明下一个字符是新单词
    if s[i] == ' ' and s[i + 1] != ' ':
        #判定新单词的首字母是否为大写,小写转换为大写
        if s[i + 1].islower():
            #将下一个字符经过处理后拼接到结果result里
            result += s[i + 1].upper()
        else:
            #将下一个字符直接拼接到result里
            result += s[i + 1]
    
  • 字符串遍历练习

见上

  • 函数的定义

语法:

python 复制代码
def 函数名(形参列表):
    函数体

def:定义函数时,在函数前必须要有这个关键字,是不可更改不可缺少的

所以将小写字符转换成大写字符的函数如下:

python 复制代码
def change_char(a):
    if 'a' <= a <= 'z':
        #第一步:通过ord(a),houqu unicode码值,然后减去32,表示对应大写字母的码值
        #第二步:通过chr()函数将unicode码值转换为对应的字符
        a = chr(ord(a) - 32)
    return a
  • ord()函数和chr()函数

见上

  • 形参和实参

如果实参是可变对象(例如,列表或字典),函数内的操作可能会影响到实参,这是因为在这种情况下,形参和实参引用的是同一个地址

python 复制代码
def modify_list(lst):
    lst.append(4)
    print(lst)

my_list = [1, 2, 3]
modify_list(my_list) # 列表将地址传给函数,函数中对列表进行append()操作,列表的内容改变
print(my_list) # [1, 2, 3, 4]

原代码

python 复制代码
def change_char(a):
    if 'a' <= a <= 'z':
        a = chr(ord(a) - 32)
    return a



n = int(input())
for _ in range(n):
    s = input()
    result = ""
    
    #先判断a的大小写情况
    result += change_char(s[0])
        
    #遍历整个字符串
    for i in range(1, len(s) - 1):
        if s[i] == ' ' and s[i + 1] != ' ':
            result += change_char(s[i + 1])
    
    print(result)

简易写法:

python 复制代码
n = 0
n = int(input())
for _ in range(n):
    words = input().split()
    result = ''
    for word in words:
        result += word[0].upper()
    print(result)
相关推荐
默_笙3 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
qq_426003963 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
长沙三为智能科技3 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
只睡四小时3 天前
Canvas 弹道联机实战:700 行 + 固定时间步长
python·websocket·html5·游戏开发·canvas
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
奇思妙想聪明勤奋的小羊3 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型
lpfasd1233 天前
2026年第38周GitHub趋势周报
python·科技·github