FizzBuzzWhizz
你是一名體育老師,在某次課距離下課還有五分鐘時,你決定搞一個遊戲。此時有100名學生在上課。遊戲的規則是:python
1. 你首先說出三個不一樣的特殊數,要求必須是個位數,好比三、五、7。
spa
2. 讓全部學生拍成一隊,而後按順序報數。code
3. 學生報數時,若是所報數字是第一個特殊數(3)的倍數,那麼不能說該數字,而要說Fizz;若是所報數字是第二個特殊數(5)的倍數,那麼要說Buzz;若是所報數字是第三個特殊數(7)的倍數,那麼要說Whizz。orm
4. 學生報數時,若是所報數字同時是兩個特殊數的倍數狀況下,也要特殊處理,好比第一個特殊數和第二個特殊數的倍數,那麼不能說該數字,而是要說FizzBuzz, 以此類推。若是同時是三個特殊數的倍數,那麼要說FizzBuzzWhizz。
5. 學生報數時,若是所報數字包含了第一個特殊數,那麼也不能說該數字,而是要說相應的單詞,好比本例中第一個特殊數是3,那麼要報13的同窗應該說Fizz。若是數字中包含了第一個特殊數,那麼忽略規則3和規則4,好比要報35的同窗只報Fizz,不報BuzzWhizz。遊戲
如今,咱們須要你完成一個程序來模擬這個遊戲,它首先接受3個特殊數,而後輸出100名學生應該報數的數或單詞。好比,utf-8
輸入input
3,5,7
it
輸出(片斷)class
1
2
Fizz
4
Buzz
Fizz
Whizz
8
Fizz
Buzz
11
Fizzlambda
Fizz
Whizz
FizzBuzz
16
17
Fizz
19
Buzz
…
一直到100
#!/usr/bin/env python # encoding: utf-8 def fiz(num,a,b,c): strs = 'Fizz'*(num % int(a) == 0)+'Buzz'*(num % int(b) == 0)+\ 'Whizz'*(num % int(c) == 0) if str(a) in str(num):return 'Fizz' elif strs: return strs else:return num while 1: a = raw_input("input the 1:") b = raw_input("input the 2:") c = raw_input("input the 3:") for i in range(1,101): print fiz(i,a,b,c) print ''
使用lamba表達式的精簡版
fiz = lambda a,b,c:['Fizz'*(str(a) in str(x)) or 'Fizz'*(x%a==0)+'Buzz'*(x%b==0)+'Whizz'*(x%c==0) or x for x in range(1,101) if 0<a<b<c<10] 2 print fiz(3,5,7)
[str(i).find('3') > -1 and 'Fizz' or 'Fizz'[i % 3 * 4 : ] + 'Buzz'[i % 5 * 4 : ] + 'Whizz'[i % 7 * 5 : ] or i for i in range(1, 101)]