很多新手刚学取模运算(%)和列表下标时,都会卡在:天数和列表下标对不齐这个问题。
今天用一道超经典入门循环题,手把手带大家吃透两种写法:基础if判断版 + 极简一行列表版,彻底弄懂为什么要 (n-1)%4。
📌 题目原题
小明有4顶不同颜色帽子,固定顺序轮流佩戴:红R→黑B→橘O→白W,4天一个循环。
输入第n天,输出当天佩戴的帽子大写字母。
输入样例:2
输出样例:B
✅ 写法一:新手友好版(if分支,最容易理解)
零基础优先学这个,不用懂列表,纯靠取模判断余数,逻辑直白。
# 接收输入的天数n = int(input())# 4天一轮回,对天数取余数remain = n % 4if remain == 1: print("R")elif remain == 2: print("B")elif remain == 3: print("O")else: # 余数为0,对应第4/8/12天 print("W")
💡 逻辑讲解
第1/5/9天:余数1 → R
第2/6/10天:余数2 → B
第3/7/11天:余数3 → O
第4/8/12天:余数0 → W
优点:逻辑直白,一眼看懂,适合刚学条件判断的新手
缺点:代码啰嗦,帽子越多,elif就要写越多
✅ 写法二:极简列表版(大佬常用,代码短)
很多同学看不懂这行代码:hats[(n - 1) % 4],下面零基础逐字拆解,看完绝对通透!
n = int(input())# 按顺序存放所有帽子hats = ["R", "B", "O", "W"]# 核心一行代码print(hats[(n - 1) % 4])
🔍 重点拆解:为什么一定要 n-1?(新手最大误区)
1、核心矛盾:人类天数 VS 电脑下标
✅ 我们人类计数:第1天、第2天、第3天、第4天(从1开始)
❌ 电脑列表下标:永远从0开始
👉 天数永远比列表下标 大1,所以必须 n-1 对齐位置!
2、为什么还要 %4 取模?
帽子4天循环一次,超过4天之后,需要自动回到第一个帽子:
3、全天数对照表(一看就懂)
⚠️ 新手高频踩坑点
千万不要直接写 n%4
如果直接用n%4当下标:第4天余数是0,会取到第一个帽子R,和题目答案完全相反,直接做题失分!
📝 总结一句话
人类从1计数,电脑列表从0计数,所有循环类题目,都要 数字-1 对齐下标
取模%就是用来做循环轮回,周期是几就对几取模
新手前期先用if版练逻辑,熟练之后再换成简洁列表版
下期更新:同款循环题型(星期判断、生肖判断),一通百通✨
需要Python新手刷题题库可以留言哦~