Python实现字母大小写互换
任务要求
1.输入一个包含大小写字母的字符串(如"Hello World!")
2.将字符串中的大写字母转为小写,小写字母转为大写
3.保留非字母字符不变
任务分析
字母大小写互换的核心逻辑在于:
1.ASCII码差异:大写字母(A-Z)的ASCII码范围为65-90,小写字母(a-z)为97-122,两者相差32。
2.内置函数:Python的str.swapcase()可直接实现该功能。
3.位运算优化:利用异或运算(^32)可快速切换大小写。
任务实现
方法1:使用内置函数swapcase()
def swap_case1(s):
return s.swapcase()
# 示例
print(swap_case1("Hello World!")) # 输出: hELLO wORLD!
说明:直接调用字符串的内置方法swapcase(),时间复杂度为O(n),代码最简洁。
方法2:循环遍历 + 条件判断
def swap_case2(s):
result = []
for char in s:
if char.islower():
result.append(char.upper())
elif char.isupper():
result.append(char.lower())
else:
result.append(char)
return ''.join(result)
# 示例
print(swap_case2("Hello World!")) # 输出: hELLO wORLD!
说明:
- 遍历每个字符,通过islower()和isupper()判断大小写
- 使用upper()和lower()转换后存入列表
方法3:ASCII码运算
def swap_case3(s):
swapped = []
for char in s:
ascii_val = ord(char)
if 65 <= ascii_val <= 90:
swapped.append(chr(ascii_val + 32))
elif 97 <= ascii_val <= 122:
swapped.append(chr(ascii_val 32))
else:
swapped.append(char)
return ''.join(swapped)
# 示例
print(swap_case3("Hello World!")) # 输出: hELLO wORLD!
说明:
- 通过ord()获取ASCII码值
- 大写字母+32转为小写,小写字母-32转为大写
方法4:列表推导式
def swap_case4(s):
return ''.join([c.upper() if c.islower() else c.lower() if c.isupper() else c for c in s])
# 示例
print(swap_case4("Hello World!")) # 输出: hELLO wORLD!
说明:单行代码实现,结合列表推导式和三目运算符。
方法5:异或运算
def swap_case5(s):
return ''.join(chr(ord(c) ^ 32) if c.isalpha() else c for c in s)
# 示例
print(swap_case5("Hello World!")) # 输出: hELLO wORLD!
说明:
- 利用异或运算特性:大写字母 ^ 32 = 小写字母,反之亦然
- 仅对字母字符生效,非字母字符保留原样
运行结果
hELLO wORLD!
进程已结束,退出代码为 0