最难面试IT公司的测试题

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

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


题如下:

问题:

你是一名体育老师,在某次课距离下课还有五分钟时,你决定搞一个游戏。此时有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.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来写的。代码简洁了一半。正如这道题要求所说:

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





本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299803.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode中的状态机类型的题目

1 总结 一般是涉及到多个状态之间的转换&#xff0c;需要定义一个具有多个枚举值的变量&#xff0c;各个状态之间通过各种条件互相变化 2 LC57. 插入区间 2.1 解析 先是要确定新区间插入到哪一个位置&#xff08;也有可能&#xff09;&#xff0c;插入后需要确定这个区间是否…

如何用Python进行数据探索,探索竞赛优胜方案?

全世界只有3.14 % 的人关注了 青少年数学之旅 AI这个词相信大家都非常熟悉&#xff0c;近几年来人工智能圈子格外热闹&#xff0c;光是AlphoGo就让大家对它刮目相看。 随着大数据时代信息科技的快速发展&#xff0c;各种各样的数据充斥着我们的生活。而我们又当如何有效利用数据…

联想ThinkPad笔记本广告向苹果MacBook Air开战

联想ThinkPad笔记本广告向苹果MacBook Air开战 [url]http://www.sina.com.cn[/url] 2008年03月24日 07:21 新浪科技联想ThinkPad X300笔记本广告&#xff0c;暗讽苹果MacBook AirMacbook Air最厚的地方仅有1.94cm&#xff0c;边缘仅0.4cm视频&#xff1a;ThinkPad X300对比Mac…

你真的知道Java同步锁何时释放?

在测试java多线程中有关 “生产者和消费者” 这个经典问题的时候&#xff0c;写代码测试的时候&#xff0c;思考到一些问题&#xff08;所以还是要动手&#xff0c;实践才能储真知啊&#xff09;&#xff0c; synchronize 同步锁何时释放&#xff0c;何时获得&#xff1f;重新获…

基于 gRPC 和 .NET Core 的服务器流

原文&#xff1a;https://bit.ly/3lpz8Ll作者&#xff1a;Chandan Rauniyar翻译&#xff1a;精致码农-王亮早在 2019 年&#xff0c;我写过《用 Mapbox 绘制位置数据》一文&#xff0c;详细介绍了我如何通过简单的文件上传&#xff0c;用 Mapbox 绘制约 230 万个位置点。本文介…

jQuery入门[2]-选择器[转]

jQuery之所以令人爱不释手&#xff0c;在于其强大的选择器表达式令DOM操作优雅而艺术。jQuery的选择符支持id,tagName,css1-3 expressions,XPath&#xff0c;参见&#xff1a;http://docs.jquery.com/SelectorsDEMO:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran…

nmap配合shell使用

命令需求&#xff1a;查看X.X.X.X/22网段所有开启5900端口的服务器&#xff0c;并以IP/host分行列出nmap -p 5900 XX.XX.XX.XX/22 |sed -e /Host is up/d -e /STATE/d -e/^$/d |awk {print $2,$5,$6} |sed -n /^open/{g;1!p;};h|sed -es/scan//g>file#nmap -p用于扫描开启59…

是个狠角色。。 | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;图源洱海弥&#xff0c;侵权删&#xff09;

构建Windows Server 2008虚拟实验室

在阅读新闻稿时&#xff0c;有很多文章和指导&#xff0c;都有一些帮助&#xff0c;但却没有针对Windows Server 2008的手把手经验可供参考。对管理员来说&#xff0c;要熟悉这个服务器系统的最好方法是确定它的特性是如何给他们的Windows环境带来便利。 先前我描述了如何方便地…

eclipse配置tomcat 和JRE环境

配置JRE环境&#xff0c;通俗点讲就是添加一个不同版本的jdk window——preferences——java——installed jres 点击add添加 选择standard VM 择一个本机正确的jdk路径 name和下面lib加载都是系统自动完成的 选择好路径后 点 finish就ok了 配置tomcat window——preferen…

为什么我的 Func 如此之慢?

咨询区 Ricky G&#xff1a;我正在给项目做性能和代码优化&#xff0c;比如将重复的代码提炼成到一个可重用的方法中&#xff0c;为了能够达到可重用目的&#xff0c;我用 Func<T> 作为方法参数。public int Calculate(Func<int> expr){return expr();}当我用 Benc…

[转载MSDN]IIS 7.0中的Live Smooth Streaming -入门

IIS Live Smooth Streaming - 测试版是Internet 信使服务 (IIS) 7.0的一个扩展&#xff0c;它能提供流畅的视频流媒体&#xff0c;并且可以根据客户端的网络带宽和CPU的执行能力的改变&#xff0c;随时的调整视频质量。 IIS Live Smooth Streaming允许Microsoft Silverlight客户…

HDOJ 2196

思路&#xff1a;先选定1为树根&#xff0c;进行第一次深搜&#xff0c;很容易求出节点u到其子节点的最长距离和次长距离&#xff0c;求次长距离的目的是如果u的跟节点最长路径经过u则dp的时候就不能取其跟节点的最长距离&#xff0c;应该取其次长距离;然后进行第二次深搜&…

为啥饮料瓶大都是圆的,牛奶盒却是方的?

全世界只有3.14 % 的人关注了青少年数学之旅一提起喝饮料和牛奶你们是不是就来精神了但是喝了这么久的饮料你有没有想过一个问题为什么饮料瓶一般都是圆的&#xff1f;而牛奶盒却是方的&#xff1f;有的人可能会说饮料瓶要拿在手上当然是圆的舒服啊拿着一个方形的饮料瓶时间长了…

Docker最全教程之使用Docker搭建Java开发环境

前言 Java是一门面向对象的优秀编程语言&#xff0c;市场占有率极高&#xff0c;但是在容器化实践过程中&#xff0c;发现官方支持并不友好&#xff0c;同时与其他编程语言的基础镜像相比&#xff08;具体见各语言镜像比较&#xff09;&#xff0c;确实是非常臃肿。 Java [J…

删除sql下注册服务器

HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\80\Tools\SQLEW\Registered Servers X\SQL Server 组 删除你那个注册名 转载于:https://www.cnblogs.com/DonePuzzle/archive/2008/04/01/1163731.html

OrganicsDelivery总结

一、UserControl调用所在页面的其他内容&#xff08;代理实现&#xff09; UserControl代码 Codeusing System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.HtmlControls;…

面试官:Redis 内存数据满了,会宕机吗?

背景Redis 数据库内存数据满了&#xff0c;会宕机吗&#xff1f;答案是&#xff1a;不会让它出现存满的情况&#xff0c;在使用Redis的时候我们要配置Redis能使用的最大的内存大小&#xff0c;存到一定容量的时候还有Redis的内存淘汰策略呢&#xff0c;还有LRU算法进行淘汰&…

Android简单封装类似JQuery异步请求

在android开发中经常会使用异步请求数据&#xff0c;通常会使用handler或者AsyncTask去做&#xff0c;handler 配合message 使用起来比较麻烦&#xff0c;AsyncTask 线程池只允许128个线程工作&#xff0c;会有溢出的问题&#xff0c;&#xff08;当然一般情况不会有那么多线程…

你爱我吗? | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;图源你这样真的很机车诶&#xff0c;侵权删&#xff09;