深耕专业教研,探索前沿技术
信息技术来源:金丽衢十二校2025学年高三第二次联考

第 10 题

答案与解析

本题解析

参考答案

A

程序分析

s="ABxy#Cd";t=""; flag=True
for i in range(len(s)):
    if "a"<=s[i]<="z" and flag:
        x=chr(((ord(s[i])-95))%26+97)
    elif "A"<=s[i]<="Z" and flag:
        x=chr(((ord(s[i])-66))%26+65)
        flag=False
    else:
        x=s[i];flag=True
    t=t+x

循环依次读取 s 中的字符,flag 初值为 True,两个字母转换分支都要求 flag 为 True。
小写字母的编码以 97 为起点,ord(s[i])-95 等于其从 0 开始的位置加 2,因此第一个分支将小写字母循环后移 2 位,flag 保持 True。
大写字母的编码以 65 为起点,ord(s[i])-66 等于其从 0 开始的位置减 1,因此第二个分支将大写字母循环前移 1 位,并把 flag 设为 False。Python 中负数对 26 取余仍得到 0~25 的余数,所以 A 会转换成 Z。
若当前不是字母,或 flag 为 False,则进入 else:字符原样保留,并将 flag 恢复为 True。每轮把处理后的 x 追加到 t,因此一次大写字母转换后的紧邻字符会原样保留。

按上述规则处理字符串:

当前字符 处理前 flag 追加到 t 的字符 处理后 flag
A True Z False
B False B True
x True z True
y True a True
# True # True
C True B False
d False d True

依次拼接后,输出为 ZBza#Bd。