博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最难面试IT公司的测试题
阅读量:5949 次
发布时间:2019-06-19

本文共 3139 字,大约阅读时间需要 10 分钟。

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

这是题目发布网址:

题如下:

问题:

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

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

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、所报数字同时是两个特殊数倍数,即第12个数的倍数说:FizzBuzz,第13个数的倍数说:FizzWhizz ,第23个数的倍数说:BuzzWhizz

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

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

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

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

解题代码:

#!/usr/bin/python#authon:yangrong#date:2014-04-29#mail:10286460@qq.comtry:       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:pass       else:   raise IdexError       for 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 iexcept:       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来写的。代码简洁了一半。正如这道题要求所说:

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

转载地址:http://mjixx.baihongyu.com/

你可能感兴趣的文章
kafka连接异常
查看>>
11g废弃的Hint - BYPASS_UJVC
查看>>
为什么工业控制系统需要安全防护?
查看>>
Mongodb部署记录[3]-主从搭建
查看>>
hive sql操作
查看>>
tomcat 深度优化
查看>>
127 - "Accordian" Patience
查看>>
nginc+memcache
查看>>
php正则匹配utf-8编码的中文汉字
查看>>
MemCache在Windows环境下的搭建及启动
查看>>
linux下crontab实现定时服务详解
查看>>
Numpy中的random模块中的seed方法的作用
查看>>
用java数组模拟登录和注册功能
查看>>
关于jsb中js与c++的相互调用
查看>>
UVA 122 Trees on the level 二叉树 广搜
查看>>
POJ-2251 Dungeon Master
查看>>
tortoisesvn的安装
查看>>
URAL 1353 Milliard Vasya's Function DP
查看>>
速读《构建之法:现代软件工程》提问
查看>>
Android onclicklistener中使用外部类变量时为什么需要final修饰【转】
查看>>