插播題解一則 FizzBuzzWhizz

2021-06-21 22:16:32 字數 1256 閱讀 2767

今天演示一道題及用python的一種解答,算是對前面內容的總結性應用:

fizzbuzzwhizz

你是一名體育老師,在某次課距離下課還有五分鐘時,你決定搞乙個遊戲。此時有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。

解法:一般的寫法是:

def main(seq,filt,tran):

for itemnum in seq:

if(str(filt[0]) in str(itemnum)):

print(tran[0])

else:

s=''.join([tran[i] for i in range(3) if itemnum%filt[i]==0 ])

if len(s)==0:

print(itemnum)

else:

print(s)

main(range(1,101),[3,5,7],['fizz','buzz','whizz'])

我們不是一般的,我們是二班、三班、興趣班的,所以寫成這樣:

(lambda seq,filt,tran:[(lambda d: (d.__setitem__('s',''.join([tran[i] for i in range(3) if itemnum%filt[i]==0 ])),(d['s'],itemnum)[len(d['s'])==0])[1],lambda d: tran[0])[str(filt[0]) in str(itemnum)]({}) for itemnum in seq])(xrange(1,101),[3,5,7],['fizz','buzz','whizz'])

IIS錯誤問題解決一則

今天同事的機器上在win2003下安裝iis後,新建乙個 提示下面的錯誤 另乙個程式正在使用此檔案,程序無法訪問!這個錯誤有些莫名其妙,別的機器上也沒有這個問題,起初我以為是目錄訪問許可權的問題或者是web服務擴充套件的問題,查了一下都沒有問題。google了一把,原來是埠的衝突問題,他機器上的另乙...

Excel 應用一則

那就開始做事吧 是想讓它完成這樣乙個功能 計算兩個日期之差.我一開始就在想是不是應該用它提供的函式來解決呢 後來發現沒有提供這個函式.並且這時我連怎麼取函式的引數位置都不清楚,慢慢來,看下別人做的.我先試了一下now 函式,哈哈.成功.太爽了,接下來就是找函式 發現這個函式 datedif star...

seq妙用一則

haoren im sj01 server01 gongsi seq f 201110 02g 1 26 20111001 20111002 20111003 20111004 20111005 20111006 20111007 20111008 20111009 20111010 2011101...