- 字符串大小的比较
- 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)