Python Challenge - FizzBuzz, FizzBuzz

Nice one. Given that msg is dedicated to the function, I would write it inside to keep it out the global namespace, safely tucked away.

>>> def fizzbuzz(limit):
    msg = { 6: "Fizz", 10: "Buzz", 0: "FizzBuzz" }
    return [msg.get(i ** 4 % 15, i) for i in range(1, limit + 1)]

>>> 
1 Like
def fizzbuzz(limit): # Write your code here new_list = [] working_list = range(1, (limit+1)) for n in working_list: if (n % 3 == 0 and n % 5 == 0): new_list.append('FizzBuzz') elif n % 5 == 0: new_list.append('Buzz') elif n % 3 == 0: new_list.append('Fizz') else: new_list.append(n) return new_list print(fizzbuzz(30))

Welcome to the forums! Looks great, your code gives the right output! There is a way to make it more concise though, and it involves doing away with working_list as a variable. How might you simplify your code?

def fizzbuzz(limit): # Write your code here fizzbuzzlist = [] for i in range(1, limit+1): if i % 3 == 0 and i % 5 == 0: fizzbuzzlist.append("FizzBuzz") elif i % 3 == 0: fizzbuzzlist.append("Fizz") elif i % 5 == 0: fizzbuzzlist.append("Buzz") else: fizzbuzzlist.append(i) return fizzbuzzlist print(fizzbuzz(16))
def fizzbuzz(limit): # Write your code here x=[] for i in range(1,limit+1): if i%3==0 and i%5==0: x.append("FizzBuzz") elif i%3==0: x.append("Fizz") elif i%5==0: x.append("Buzz") else: x.append(i) return x print(fizzbuzz(16))
def fizzbuzz(limit): final_list = [] for i in range(1, limit+1): if i % 3 == 0 and not i % 5 == 0: i = 'Fizz' elif i % 5 == 0 and not i % 3 == 0: i = 'Buzz' elif i % 3 == 0 and i % 5 == 0: i = 'FizzBuzz' final_list.append(i) return final_list print(fizzbuzz(16))
def fizzbuzz(limit): # Write your code here answer = [] for num in range(1, limit + 1): if num % 5 == 0 and num % 3 == 0: answer.append("FizzBuzz") elif num % 5 == 0: answer.append("Buzz") elif num % 3 == 0: answer.append("Fizz") else: answer.append(num) return answer print(fizzbuzz(16))
def fizzbuzz(limit): # Write your code here asd=[] for i in range(1,limit+1): if i%15 ==0: asd.append("FizzBuzz") elif i % 3 == 0: asd.append("Fizz") elif i%5 == 0: asd.append("Buzz") else: asd.append(i) return asd print(fizzbuzz(16))

I tried to do it using a generator.

def fizzbuzz(limit):
  # generator: 
  def FizzBuzzGenerator(n):
    x = 1
    while x <= n:
      if x % 15 == 0:
        yield 'FizzBuzz'
      elif x % 5 == 0:
        yield 'Buzz'
      elif x % 3 == 0:
        yield 'Fizz'
      else:
        yield x
      x += 1

  return list(FizzBuzzGenerator(limit))

print(fizzbuzz(16))
1 Like

Python Challenge - FizzBuzz, FizzBuzz - #9 by jipibi

Wonder if the logic can be applied here? Would eliminate the if/elif/else.

Where is, i, in all this?

image
only difference to others is i made a list before and edited it, rather than making a new one during the iterating process. probably a bit slower but i think it looks cleaner

def fizzbuzz(limit):
  # Write your code here
  fizz = "Fizz"
  buzz = "Buzz"
  fizzBuzz = "FizzBuzz"
  lst = []
  n = limit

  for num in range(1, n+1):
    lst.append(num)
    if num % 3 == 0:
      lst[num-1] = fizz
    if num % 5 == 0:
      lst[num-1] = buzz
    if num % 3 == 0 and num % 5 == 0:
      lst[num-1] = fizzBuzz
  return lst

print(fizzbuzz(16))
def fizzbuzz(n): list = [] for i in range (1, n+1): if i%3 == 0 and i%5 == 0: list.append("FizzBuzz") elif i%5 == 0: list.append("Buzz") elif i%3 == 0: list.append("Fizz") else: list.append(i) return(list) print(fizzbuzz(16))

How I did it:

def fizzbuzz(limit):
  fizzy = []
  for i in range(1, limit+1):
    if i % 15 == 0:
      fizzy.append('FizzBuzz')
    elif i % 5 == 0:
      fizzy.append('Buzz')
    elif i % 3 == 0:
      fizzy.append('Fizz')
    else:
      fizzy.append(i)
  return fizzy

print(fizzbuzz(16))

Also, can I know how list comprehensions work?

Welcome to the forums! Your code is correct, though there is a faster and shorter way that uses different conditionals. Can you find it?

def fizzbuzz(limit):

Write your code here

limit = int(limit)
x =
for i in range(1,limit+1):
if i%3==0 and i%5!=0:
x.append(“Fizz”)
elif i%5==0 and i%3!=0:
x.append(“Buzz”)
elif i%3==0 and i%5==0:
x.append(“FizzBuzz”)
else:
x.append(i)
return x

print(fizzbuzz(1500))

1 Like
def fizzbuzz(limit):
  list = []
  start = 1
  while (start <= limit):
    if start % 3 == 0 and not start % 5 == 0:
      list.append("Fizz")
    elif not start % 3 == 0 and start % 5 == 0:
      list.append("Buzz")
    elif start % 3 == 0 and start % 5 == 0:
      list.append("FizzBuzz")
    else:
      list.append(start)
    start += 1
  return list
print(fizzbuzz(16))
def fizzbuzz(limit):
  newlst = []
  i = 0
  while i < limit:
    i += 1
    if i % 3 == 0 and i % 5==0:#order matters
      newlst.append("FizzBuzz")
    elif i % 3 == 0:
      newlst.append("Fizz" )
    elif i % 5 == 0:
      newlst.append("Buzz" )  
    else:
      newlst.append(i)
  return newlst
print(fizzbuzz(16))

Consider using the LCM of 3 and 5 rather than logic.

if i % 15: