球星编号小程序
介绍
一不小心,年都过完了,又要开学了,又可以享受好几个月的鲜活的知识大餐了,大家是不是很开心,很兴奋…嗯…不管怎么说,相别一个寒假的同学之间一定一见面就开始大谈特谈了吧。聊天的时候想必很多男生都会聊起篮球吧~然而,一不小心忘了 NBA 某个球员的号码怎么办呢?不用担心,我们这位同学给大家带来的很好的解决方法——用 R 写的球星编号小程序。
代码
NBAnumbers <- function(x) {
switch(x,
"1"=" Tracy McGrady team: Houston Rockets",
"2"=" Kyrie Irving team: Cleveland Cavaliers",
"3"="Dwyane Wade team: Miami Heat",
"5"="Kevin Garnett team: Boston Celtics",
"6"="LeBron James team: Miami Heat ",
"7"="Carmelo Anthony team: New York Knicks",
"11"="Yao Ming team: Houston Rockets ",
"12"="Dwight Howard team: Houston Rockets ",
"13"="Steve Nash team: Phoenix Suns",
"23"="Michal Jordan team: Chicago Bulls ",
"24"="Kobe Bryan team :L . A .Lakers",
"32"="Shaquile Rashaun O’Neal team: L . A .Lakers ",
"91"="Dennis Rodman team: Chicago Bulls ",
"33"="Larry Bird team: Boston Celtics ")
}
演示
NBAnumbers("1")
## [1] " Tracy McGrady team: Houston Rockets"
NBAnumbers("7")
## [1] "Carmelo Anthony team: New York Knicks"
NBAnumbers("23")
## [1] "Michal Jordan team: Chicago Bulls "
点评
这个可是一个比较实用的小程序呀,不过对我这种对篮球没什么感觉的孩子来说,真的是一点都看不懂[捂脸]。从程序上来讲嘛,还是一个很简单的 switch()
函数,输入数字用来配对输出相应的人名和球队。整个程序还是很清晰的,要是能加上一个默认分支,即当用户输入程序中没有的编号时,给一个友好的提示会更好。此外,这里其实存在一个隐藏的小 bug。我们来看这样的一个输入:
NBAnumbers(10)
## [1] "Michal Jordan team: Chicago Bulls "
这个结果是不是有点出人意料?程序中没有编号为 10 的球员,但是却输出了编号为 23 的乔丹。其实,这并不是 R 给你捣乱,只是因为 switch()
函数在第一个参数为数值类型时,输出的是第这个数加 1 个的参数,我们数一下,乔丹这一行是不是正好是 switch()
函数的第 11 个参数呢。
所以,在使用 switch()
时,最好将用户输入的数进行一下处理,将其转换成文本类型就不会出现不期望的结果啦。
最后,有兴趣的同学们还可以继续扩充程序里的数据,还可以把球队也当成一个搜索条件进行查找哦。