最难面试IT公司的测试题
逛網站時無意間看到一道測試題,看到這標題我嚇到了(最難面試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公司的测试题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实施Exchange 2013中的 Ma
- 下一篇: nmap配合shell使用