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)
相关推荐
数据智能老司机1 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机1 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机1 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i1 小时前
drf初步梳理
python·django
每日AI新事件1 小时前
python的异步函数
python
这里有鱼汤2 小时前
miniQMT下载历史行情数据太慢怎么办?一招提速10倍!
前端·python
databook11 小时前
Manim实现脉冲闪烁特效
后端·python·动效
程序设计实验室12 小时前
2025年了,在 Django 之外,Python Web 框架还能怎么选?
python
倔强青铜三13 小时前
苦练Python第46天:文件写入与上下文管理器
人工智能·python·面试
用户25191624271117 小时前
Python之语言特点
python