Après avoir pratiqué map (), reduction (), filter (), recurrence, j'ai écrit FizzBuzz en utilisant map (), reduction (), filter (), recursive.
Tout d'abord, j'ai créé une fonction fizzbuzz (n).
def fizzbuzz(n):
if (n % 15) == 0:
return "FizzBuzz"
elif (n % 3) == 0:
return "Fizz"
elif (n % 5) == 0:
return "Buzz"
else:
return str(n)
map appelle simplement la fonction ci-dessus.
for s in map(fizzbuzz,range(1,101)):
print s
Pour réduire (), j'ai créé une fonction mrg.
def mrg(msg,n):
msg = str(msg)
if msg == '0':
return str(fizzbuzz(n))
else:
return msg + '\n' + str(fizzbuzz(n))
print reduce(mrg,range(0,101))
À propos de filter (), je l'ai écrit assez de force. Je me demande s'il existe une bonne façon de l'écrire.
ls = range(1,101)
msg = range(1,101)
for i in filter(lambda x: (x%3)==0,ls):
msg[i-1] = "Fizz"
for i in filter(lambda x: (x%5)==0,ls):
if msg[i-1] == "Fizz":
msg[i-1] += "Buzz"
else:
msg[i-1] = "Buzz"
for s in msg:
print s
Et récursif. Cela semble le plus simple car il n'y a pas de pour.
START = 1
FINISH = 100
def fzbz(n):
if n == FINISH:
return fizzbuzz(n)
else:
return fizzbuzz(n)+"\n"+fzbz(n+1)
print fzbz(START)
Recommended Posts