逛网站时无意间看到一道测试题,看到这标题我吓到了(最难面试IT公司),本以为应该很难完成的,分析之后,花了半小时用python写出来了,各位朋友们也可以测试测试哦。不限语言。

这是题目发布网址:https://www.jinshuju.net/f/EGQL3D

题如下:

问题:

你是一名体育老师,在某次课距离下课还有五分钟时,你决定搞一个游戏。此时有100名学生在上课。游戏的规则是:

1. 你首先说出三个不同的特殊数,要求必须是个位数,比如3、5、7。

2. 让所有学生拍成一队,然后按顺序报数。

3. 学生报数时,如果所报数字是第一个特殊数(3)的倍数,那么不能说该数字,而要说Fizz;如果所报数字是第二个特殊数(5)的倍数,那么要说Buzz;如果所报数字是第三个特殊数(7)的倍数,那么要说Whizz。

4. 学生报数时,如果所报数字同时是两个特殊数的倍数情况下,也要特殊处理,比如第一个特殊数和第二个特殊数的倍数,那么不能说该数字,而是要说FizzBuzz, 以此类推。如果同时是三个特殊数的倍数,那么要说FizzBuzzWhizz。

5. 学生报数时,如果所报数字包含了第一个特殊数,那么也不能说该数字,而是要说相应的单词,比如本例中第一个特殊数是3,那么要报13的同学应该说Fizz。如果数字中包含了第一个特殊数,那么忽略规则3和规则4,比如要报35的同学只报Fizz,不报BuzzWhizz。

现在,我们需要你完成一个程序来模拟这个游戏,它首先接受3个特殊数,然后输出100名学生应该报数的数或单词。比如,

输入

3,5,7

输出(片段)

1

2

Fizz

4

Buzz

Fizz

Whizz

8

Fizz

Buzz

11

Fizz

Fizz

Whizz

FizzBuzz

16

17

Fizz

19

Buzz

一直到100

分析:

程序获取3个个位数特殊值,然后循环从1说到100,如满足问题中与特殊值的关系,则按指定的输出。

对于上述问题描述中的关系,优先级分析如下:

1、如果数中包含了第一个数,忽略其它规则。说:Fizz

2、如同时是三个数的倍数,说:FizzBuzzWhizz

3、所报数字同时是两个特殊数倍数,即第1、2个数的倍数说:FizzBuzz,第1、3个数的倍数说:FizzWhizz ,第2、3个数的倍数说:BuzzWhizz

4、所报数是第一个数的倍数,说:Fizz

5、所报数是第二个数的倍数,说:Buzz

6、所报数是第三个数的倍数,说:Whizz

7、如上面都不是,说:当前数字

解题代码:

#!/usr/bin/python
#authon:yangrong
#date:2014-04-29
#mail:10286460@qq.com
try:num=raw_input('Please input three digit,and numbers less than 10,Example input:3,5,7   \ninput:').split(',')if 1<=int(num[0])<10 and 1<=int(num[1])<10  and1<=int(num[2])<10:passelse:   raise IdexErrorfor i in range(1,101):if num[0] in str(i):print'Fizz'elif i%int(num[0])==0 and  i%int(num[1])==0  and i%int(num[2])==0 :print 'FizzBuzzWhizz'elif i%int(num[0])==0 andi%int(num[1])==0:print 'FizzBuzz'elif i%int(num[1])==0 andi%int(num[2])==0:print 'BuzzWhizz'elif i%int(num[0])==0 andi%int(num[2])==0:print 'FizzWhizz'elif i%int(num[0])==0:print'Fizz'elif i%int(num[1])==0:print'Buzz'elif i%int(num[2])==0:print'Whize'else:print i
except:print 'Please input three digit,and numbers less than 10. Example: 3,5,7'

执行效果:

如果输入的数值不是3个个位数,则提示并退出,如下面两次测试。

root@yangrong:/python# python Test.py

Please input three digit,and numbers lessthan 10, Example input:3,5,7

input: a,b,c

Please input three digit,and numbers lessthan 10. Example: 3,5,7

root@yangrong:/python# python Test.py

Please input three digit,and numbers lessthan 10, Example input:3,5,7

input: 1,2,100

Please input three digit,and numbers lessthan 10. Example: 3,5,7

输入正确的数值执行效果

root@yangrong:/python# python Test.py

Please input three digit,and numbers lessthan 10, Example input:3,5,7

input: 3,5,7

1

2

Fizz

4

Buzz

Fizz

Whize

8

Fizz

Buzz

11

Fizz

Fizz

Whize

FizzBuzz

16

17

Fizz

19

Buzz

FizzWhizz

22

Fizz

Fizz

Buzz

26

Fizz

Whize

29

Fizz

Fizz

Fizz

Fizz

Fizz

Fizz

Fizz

Fizz

Fizz

Fizz

Buzz

41

FizzWhizz

Fizz

44

FizzBuzz

46

47

Fizz

Whize

Buzz

Fizz

52

Fizz

Fizz

Buzz

Whize

Fizz

58

59

FizzBuzz

61

62

Fizz

64

Buzz

Fizz

67

68

Fizz

BuzzWhizz

71

Fizz

Fizz

74

FizzBuzz

76

Whize

Fizz

79

Buzz

Fizz

82

Fizz

FizzWhizz

Buzz

86

Fizz

88

89

FizzBuzz

Whize

92

Fizz

94

Buzz

Fizz

97

Whize

Fizz

Buzz

写完之后,发现代码非常凌乱,一开始用了好多的循环完成了功能,后来思考之后把那些循环去掉,换成elif来写的。代码简洁了一半。正如这道题要求所说:

即使简单的代码,做到尽善尽美一样难能可贵,所以,提交之前,请想一想,它是不是可以更卓越。

最难面试IT公司的测试题相关推荐

  1. IT面试最难的科技公司分享 | 实例化DevOps原则

    IT面试哪家难?非死不可把头点! 谷歌瘪嘴笑开颜,思特沃克耸耸肩~ 科技博客Business Insider撰稿人朱莉·波特(Julie Bort)上周五依据美国雇主评价网站Glassdoor.com ...

  2. 打算面试外包公司刷经验,等差不多了,再去甲方尝试,是我想的太天真了。

    最开始是打算面试外包公司刷经验,等经验差不多了,再去甲方尝试,可惜不太顺利. 一.迈思(面试了30分钟) 自我介绍 左连接(a 表左连接 b 表,a 表全部数据出来,b 表没有的数据为空) a 表左连 ...

  3. 面试新公司时,请对老东家“嘴下留情”

    面试新公司时,请对老东家"嘴下留情" 面试新公司时,HR很可能会问到求职者的离职原因.这个提问,从侧面反映出求职者的职业修养和工作态度. 通常一个人的工作观前后一致,很难在短时间内 ...

  4. 面试这些公司是在浪费时间

    有些公司如果不是抱着练手的心态,我们完全没有必要去面试,因为面试这样的公司本身可能就是一种时间的浪费. 面试那些公司算浪费时间呢?这里就来给大家列举一下: 1.外包公司 不论是在多大的公司做外包,你还 ...

  5. 错过了面试,公司招满人了_您可能错过了Google令人赞叹的AI公告。

    错过了面试,公司招满人了 by Gil Fewster 吉尔·弗斯特(Gil Fewster) 您可能错过了Google令人赞叹的AI公告. (The mind-blowing AI announce ...

  6. 程序员面试 IT 公司,这些细节一定要注意!

    作者 | 倪升武 责编 | 仲培艺 不管是应届生还是在职人员,都会面临着各种面试问题,网上有很多面经,但是大部分都是和技术相关的,总结有哪些技术需要掌握等等. 但是我觉得,面试本来就是一个双向的选择过 ...

  7. Interview:算法岗位面试—BAT公司问题面试之计算机基础(进程与线程的区别)、经典概率问题等集锦

    Interview:算法岗位面试-BAT公司问题面试之计算机基础(进程与线程的区别).经典概率问题等集锦 目录 计算机基础问题 1.进程与线程的区别 概率问题 1.貂蝉与西施回头率比美问题 计算机基础 ...

  8. 初中级前端程序员面试中小型公司会问哪些问题?

    初中级前端程序员面试中小型公司会问哪些问题?不同的公司面试内容也不尽相同,有的面试过程很轻松,有的面试官是个架构师level 挺高不会问八股文,给出了几个现实中的场景,然后转换成代码的逻辑去让实现. ...

  9. Androiod面试-按照公司分类的面试题

    这些面试问题在上一篇Android面试记录中都有写到,这里主要是按照公司来写的.还不太会用markdown的编辑器,排版不太好看 (˘•ω•˘) 另外,可以看看<Android开发探索>, ...

最新文章

  1. 如何表示数组所有数都不等于一个数_每日算法系列【LeetCode 523】连续的子数组和...
  2. 爬楼梯(递归——奇数步,偶数步扩展)
  3. 论文浅尝 | 六篇2020年知识图谱预训练论文综述
  4. freeswitch 发update sip消息_LeetCode LCP 05——发 LeetCoin
  5. 三大场景,对象存储OSS带你快速上云
  6. 【OpenCV 例程200篇】03. 图像的显示(cv2.imshow)
  7. 飞鸽传书2011比飞鸽传书2007的进化
  8. 7-32 中位数 (10 分)
  9. 我是如何在都柏林的一次中转中无意中写了维基百科页面的
  10. 如何估算太坊交易的gas消耗量
  11. 基于httpd的mod_deflate模块
  12. Win10 通过注册表修改默认应用
  13. Java实现海报+二维码+二维码中间log+文字合并高清图片
  14. 国内主流的ERP软件大盘点
  15. 【STM32F407的DSP教程】第1章 初学数字信号处理准备工作
  16. 【深度学习+组合优化】深度学习和强化学习在组合优化方面有哪些应用?
  17. 编程比赛三大赛制介绍(ACM赛制、OI赛制、IOI赛制)
  18. android 日记 app推荐,用这些 APP 来记录生活,再也不用担心无法坚持写日记
  19. 交换机分布缓存_一种交换机的缓存管理方法
  20. Unified Functional Testing(UFT)15.0.2入门保姆级教程(二),图文详解。QTP

热门文章

  1. vmware创建虚拟机不识别网卡
  2. React setStats数组不更新,百思不得其解。
  3. scala 方法、函数定义小结
  4. Thinkphp 验证码、文件上传
  5. Cognos TM1_10.1.1服务端配置
  6. 在CentOS中安装gcc配置c语言开发环境(转)
  7. POJ 3264 Balanced Lineup(RMQ)
  8. rfc mail content-type
  9. mui aniShow 动画属性
  10. restfull知识点