python完成FizzBuzzWhizz問題(拉勾網面試題)示例
拉勾網面試題
1. 你首先說出三個不同的特殊數,要求必須是個位數,比如3、5、7。
2. 讓所有學生拍成一隊,然后按順序報數。
3. 學生報數時,如果所報數字是第一個特殊數(3)的倍數,那么不能說該數字,而要說Fizz;如果所報數字是第二個特殊數(5)的倍數,那么要說Buzz;如果所報數字是第三個特殊數(7)的倍數,那么要說Whizz。
4. 學生報數時,如果所報數字同時是兩個特殊數的倍數情況下,也要特殊處理,比如第一個特殊數和第二個特殊數的倍數,那么不能說該數字,而是要說FizzBuzz, 以此類推。如果同時是三個特殊數的倍數,那么要說FizzBuzzWhizz。
5. 學生報數時,如果所報數字包含了第一個特殊數,那么也不能說該數字,而是要說相應的單詞,比如本例中第一個特殊數是3,那么要報13的同學應該說Fizz。如果數字中包含了第一個特殊數,那么忽略規(guī)則3和規(guī)則4,比如要報35的同學只報Fizz,不報BuzzWhizz。
現在,我們需要你完成一個程序來模擬這個游戲,它首先接受3個特殊數,然后輸出100名學生應該報數的數或單詞。
def check(a, dic, d):
answer = ''
if str(a) in str(d):
return dic[a]
for x in dic:
if not (d % x):
answer = answer + dic[x]
if not answer:
return d
return answer
if __name__ == '__main__':
a = int(raw_input('input u a: '))
b = int(raw_input('input u b: '))
c = int(raw_input('input u c: '))
dic = {a: 'Fizz', b: 'Buzz', c: 'Whizz'}
for x in xrange(1, 101):
print check(a, dic, x)
['Fizz'[(str(3)not in str(i))*4:]or 'Fizz'[i % 3 * 5 : ] + 'Buzz'[i % 5 * 5 : ] + 'Whizz'[i % 7 * 5 : ] or i for i in range(1,101)]
相關文章
Python中Django與Echarts的結合用法圖文詳解
ECharts是一個第三方控件,下面這篇文章主要給大家介紹了關于Python中Django與Echarts的結合用法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2022-10-10Python 使用 attrs 和 cattrs 實現面向對象編程的實踐
這篇文章主要介紹了Python 使用 attrs 和 cattrs 實現面向對象編程的實踐,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06