Python挑战练习-进阶练习44
编写一个程序,将给定单词的每个字母替换为字母表中的下一个字符。
-
定义函数
shift_char(),接受一个参数word。 -
在函数内,将单词的每个字母替换为字母表中的下一个字母。
-
最后,返回转换后的单词。
示例输入
moon
示例输出
nppo
-
输入的单词保证不含字母
z或Z。
如何获取字母表中下一个字母(可以通过获取字符的 ASCII 码值,然后将其加1来实现)
def shift_char(word):
# 此处编写你的代码
result=''
for ch in word:
result+=chr(ord(ch)+1)
return result
# 获取单词
word = input()
# 调用函数
print(shift_char(word))
写在后面:这道题主要就在于如何获取字母表中下一个字母。那么为什么题目中出现了“输入的单词保证不含字母z或Z”,下面就来说明这个问题。字母表中最后一个小写字母 '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!",其中字母部分按规则替换,非字母的逗号、空格和感叹号等字符保持原样。
Python进阶:字母替换挑战练习
397

被折叠的 条评论
为什么被折叠?



