什么是 FizzBuzz?
最后更新于
最后更新于
欢迎你加入第一个训练副本,项目很简单,这是一个简单的猜数字游戏。
想象你是个小学 5 年级的学生,现在还有 5 分钟就要下课,数学老师带全班同学玩一个小游戏。他会用手指挨个指向每个学生,被指着的学生就要依次报数:
第一个被指着的学生说“1”,
第二个被指着的学生说“2”,
以此类推。
呃……并不完全“以此类推”……如果一个学生被指着的时候,应该报的数是 3 的倍数,那么他就不能说这个数,而是要说“Fizz”。
同样的道理,5 的倍数也不能被说出来,而是要说“Buzz”。
于是游戏开始了,老师的手指向一个个同学,他们开心地喊着:“1!”,“2!”,“Fizz!”,“4!”,“Buzz!”……
终于,老师指向了你,时间仿佛静止,你的嘴发干,你的掌心在出汗,你仔细计算,然后终于喊出“Fizz!”。运气不错,你躲过了一劫,游戏继续进行。
为了避免在自己这儿失败,我们想了一个“作弊”的法子:
假如说你有一个“神奇”的计算器,每次只需要告诉它一个数字,就能自动算出报数的结果,这样到你这儿的时候,就马上知道该说什么了。
全班有 33 个同学,游戏可能会玩 2 到 3 轮。
现在,赶紧去写代码吧!
让我们先来拆解一下任务:
写一个简单的计算器,
可以通过点击按键输入任意的数字,
遇到数字为 3 的倍数的时候,计算结果为“Fizz”,
遇到数字为 5 的倍数的时候,计算结果为“Buzz”,
既能被 3 整除、又能被 5 整除的数,则输出结果为“FizzBuzz”。
页面 UI 交互部分的逻辑还包括点击 C
键对计算器进行清零,点击 =
键计算结果。
当然,别忘了 UI 样式。
number: Int
result: String
1
'1'
3
'Fizz'
5
'Buzz'
15
'FizzBuzz'
示例输出:
当你开发完毕,这时候 PM 来了,他告诉你:需求变了。
如果一个数能被 3 整除,或者包含数字 3,那么这个数就是“Fizz”;
如果一个数能被 5 整除,或者包含数字 5,那么这个数就是“Buzz”。
当然,如果既是 3 的倍数又是 5 的倍数,或包含数字 3 又包含数字 5,那么这个数就是“FizzBuzz”。
这时,你该怎么办?
掌握测试驱动开发基本节奏
至少练习 3 遍 FizzBuzz 题目
能在 10 分钟内完成 FizzBuzz 题目
总时长
任务 0
任务 1
任务 2
任务 3
任务
练功前的热身
TDD 初体验
先利其器
再撸一遍
4h
1h
1h
1h
1h
Kent Beck 的《测试驱动开发》,可以只读第 1 章