[PYTHON] Schreiben Sie FizzBuzz mit map (), redu (), filter (), rekursiv

Nachdem ich map (), redu (), filter () und Recurrence geübt hatte, schrieb ich FizzBuzz mit map (), redu (), filter () und Rekursion.

Zuerst habe ich eine Fizzbuzz (n) -Funktion gemacht.

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 ruft einfach die obige Funktion auf.

for s in map(fizzbuzz,range(1,101)):
  print s

Für redu () habe ich eine mrg-Funktion erstellt.

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))

Über filter () habe ich es ganz gewaltsam geschrieben. Ich frage mich, ob es einen guten Weg gibt, es zu schreiben.

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

Und rekursiv. Das sieht am einfachsten aus, weil es kein für gibt.

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

Schreiben Sie FizzBuzz mit map (), redu (), filter (), rekursiv
Schreiben Sie FizzBuzz ohne "="
Schreiben Sie testgetriebenen FizzBuzz-Code mit Python doctest.
Sortierung mit rekursiv zusammenführen
Medianfilter mit Röntgenstrahl (Medianfilter)
Tiefpassfilter mit Verschluss