单词字母替换

Python挑战练习-进阶练习44

编写一个程序,将给定单词的每个字母替换为字母表中的下一个字符。

  • 定义函数shift_char(),接受一个参数word

  • 在函数内,将单词的每个字母替换为字母表中的下一个字母。

  • 最后,返回转换后的单词。

示例输入

moon

示例输出

nppo

  • 输入的单词保证不含字母zZ


如何获取字母表中下一个字母(可以通过获取字符的 ASCII 码值,然后将其加1来实现)

​
def shift_char(word):
    # 此处编写你的代码 
    result=''
    for ch in word:
        result+=chr(ord(ch)+1)
    return result
 
# 获取单词
word = input()
# 调用函数 
print(shift_char(word))

​

写在后面:这道题主要就在于如何获取字母表中下一个字母。那么为什么题目中出现了输入的单词保证不含字母zZ”,下面就来说明这个问题。字母表中最后一个小写字母 'z' 的 ASCII 码值是 122,如果当前字符是 'z',加 1 后就超出了小写字母的 ASCII 码范围了。结合豆包,给出一个考虑判断输入字母是大写还是小写,输入字母如果为 "z" 或者 "Z" 的代码 

def shift_char(word):
    result = ""
    for char in word:
        if char.isalpha():
            if char.islower():
                shifted_char = chr(ord(char) + 1) if ord(char) < 122 else 'a'
            else:
                shifted_char = chr(ord(char) + 1) if ord(char) < 90 else 'A'
            result += shifted_char
        else:
            result += char
    return result

 解释:最后要输出一个新的字符串,那么首先一定要进行初始化。首先,初始化一个空字符串 result,用于存储最终转换后的单词。然后通过 for char in word: 循环遍历输入单词 word 中的每一个字符。在循环中,使用 if char.isalpha(): 判断当前字符是否是字母(通过字符串的 isalpha 方法,该方法会返回一个布尔值,用于表明字符是否属于字母范畴),如果是字母,再进一步区分是小写字母还是大写字母进行不同的处理。

  • 小写字母处理:对于小写字母,使用 if char.islower(): 来判断。要将小写字母替换为字母表中的下一个字符,可以通过获取字符的 ASCII 码值,然后将其加 1 来实现。在 Python 中,ord() 函数用于获取字符的 ASCII 码值,例如 ord('a') 的值是 97,ord('b') 的值是 98 等。通过 chr(ord(char) + 1) 先获取当前小写字母的 ASCII 码值并加 1,再使用 chr() 函数将新的 ASCII 码值转换回字符,就得到了字母表中下一个字符。

但是需要注意的是,字母表中最后一个小写字母 'z' 的 ASCII 码值是 122,如果当前字符是 'z',加 1 后就超出了小写字母的 ASCII 码范围了,此时需要将其循环回到 'a',通过 shifted_char = chr(ord(char) + 1) if ord(char) < 122 else 'a' 这个条件表达式来实现,如果当前小写字母的 ASCII 码值小于 122,就正常进行加 1 转换;如果等于 122(即当前字符是 'z'),就将转换后的字符设置为 'a'

  • 大写字母处理:对于大写字母(通过 else 分支进入,也就是当字符是字母但不是小写字母时,就是大写字母情况),处理逻辑和小写字母类似,只是大写字母 'Z' 的 ASCII 码值是 90,所以通过 shifted_char = chr(ord(char) + 1) if ord(char) < 90 else 'A' 来进行转换,即当大写字母的 ASCII 码值小于 90 时,正常加 1 转换为下一个大写字母;当等于 90(即当前字符是 'Z')时,循环回到 'A'

如果当前字符不是字母(通过最外层 if char.isalpha(): 判断为 False 时),则直接将这个字符添加到 result 字符串中,保持原样不变,例如对于单词中的空格、标点符号等非字母字符都按此处理。

 结果:

例如,调用 shift_char("hello") 函数,会返回 "ifmmp",因为每个小写字母都被替换为了字母表中的下一个小写字母;调用 shift_char("WORLD") 会返回 "XPSME",将每个大写字母替换为了下一个大写字母;而调用 shift_char("Hello, World!") 会返回 "Ifmmp, Xpsme!",其中字母部分按规则替换,非字母的逗号、空格和感叹号等字符保持原样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值