On Fri, Apr 5, 2019 at 5:56 PM Sayth Renshaw <flebber.c...@gmail.com> wrote: > > I saw this fizzbuzz in Eloquent Javascript and thought its really nice. Not > all the usual if else version, just if. > > for (let n = 1; n <= 100; n++) { > let output = ""; > if (n % 3 == 0) output += "Fizz"; > if (n % 5 == 0) output += "Buzz"; > console.log(output || n); > } > > I can't quite get a nice version like this out. > > This was my attempt to mimick it. I am sure Python can get it cleaner, but I > had never thought about not doing if else for Fizzbuzz its just the way I did > it. > > n = range(100) > output = "" > for num in n: > if (num % 3 == 0): output += "Fizz" > if (num % 5 == 0): output += "Buzz" > print(output or num) > > Haven't quite got it. But is possible nice and succinct like the javascript > version. Maybe lambda will do it, gonna try that.
I'd recommend a more direct transformation, specifically resetting 'output' inside the loop. Otherwise, you basically have the same code. > Any unique mindlowing style FizzBuzz I would never have considered and can > learn off? > print(*[[n,"Fizz","Buzz","Fizzbuzz"][int("300102100120100"[n%15])] for n in range(1,101)], sep="\n") This is not good code, and if anyone asks, I didn't say you were allowed to do this in an interview. ChrisA -- https://mail.python.org/mailman/listinfo/python-list