来源:十四届蓝桥杯STEMA考试Python真题试卷第二套编程第二题。虽然不建议,但是我们还是给出一行代码的实现,以展现Python的简洁。
题目描述:
空调遥控器上的模式按钮可控制四种模式的切换。空调的初始模式为制热模式,第一次按下按钮变为制冷模式,第二次按下按钮变为睡眠模式,第三次按下按钮变为除湿模式,第四次按下按钮变为制热模式,第五次按下按钮变为制冷模式,以此类推。请计算出按下 N 次按钮后,空调为何种模式。
输入描述:
输入一个正整数 N(1<N<1000),表示按下空调遥控器的模式按钮的次数(初始模式为制热模式)
输出描述:
输出一个大写字母,当按下模式按钮 N 次后,空调为制热模式则输出“R”,为制冷模式则输出“L”,为睡眠模式则输出“S”,为除湿模式则输出“C”。
样例输入:
5
样例输出:
L
参考答案:
def get_ac_mode(n):
# 定义模式序列(R-制热,L-制冷,S-睡眠,C-除湿)
modes = ['R', 'L', 'S', 'C']
# 由于模式是循环的,我们可以使用取余运算
# n-1是因为我们要从初始状态开始计算
# 初始状态是R,按一次变L,所以要减1
mode_index = n % len(modes)
return modes[mode_index]
def main():
# 读取按键次数N
n = int(input())
# 获取并输出最终模式
result = get_ac_mode(n)
print(result)
if __name__ == "__main__":
main()
代码说明:
这个程序的工作原理是:
- 使用列表存储四种模式:‘R’(制热)、‘L’(制冷)、‘S’(睡眠)、‘C’(除湿)
- 使用取余运算来处理循环模式
使用示例:
输入:5
输出:L
解释过程:
- 初始状态为制热®
- 第1次按:制冷(L)
- 第2次按:睡眠(S)
- 第3次按:除湿©
- 第4次按:制热®
- 第5次按:制冷(L)
当输入N=5时,经过5次按键后,空调处于制冷模式,所以输出"L"。
需要注意的是:
- 输入N必须是正整数
- 程序已经考虑了循环性,可以处理任意小于1000的正整数
- 输出为对应模式的大写字母
这个解决方案即使输入很大的数字也能快速计算出结果,因为使用了取余运算来处理循环。
让我们再尝试写一个一行代码的实现方式,来展示一下Python语言“简洁“的魅力:
print(['R', 'L', 'S', 'C'][int(input()) % 4])
这行代码完成了相同的功能,解释一下:
input()
读取输入的数字int()
将输入转换为整数-1
因为是从初始状态开始计算% 4
对4取余来处理循环- 用得到的余数作为索引从列表
['R', 'L', 'S', 'C']
中获取对应的模式 print()
输出结果
这种写法虽然简洁,但相比之前的完整实现可能不太容易理解和维护。建议在实际项目中使用更清晰的多行实现方式。