create account

RE: Introducing the Coding Challenge by benniebanana

View this thread on: hive.blogpeakd.comecency.com

Viewing a response to: @reggaemuffin/introducing-the-coding-challenge

· @benniebanana · (edited)
$0.57
I'm from a Java background but here is my amateur Python submission. Started learning Python recently and fell in love with it so I thought I'd give this a try. 

````
def fizzbuzz(n):

    string = ""

    try:
        if n%3 == 0:
            string += "Fizz"
        if n%5 == 0:
            string += "Buzz"
        else:
            string = n

        return string

    except TypeError:
        return "Error: Not a Number!"

def main():
    for n in range(101):
        print(fizzbuzz(n))

if __name__ == '__main__':
    main()
````

**Explanation:** The modulo operator(%) returns the remainder of a division. For example 8%5 will give us 3. When a number is fully dividable by another number it will return 0 thus checking if the remainder of a division is 0 we know that the number is fully dividable by the other which makes it a multiple of that number.

**EDIT** After posting my solution which is pretty much my level of Python I decided to do some research to see how the solution could be optimized and this is when I came across this gloriously ugly  Python one-liner <a href="http://michaeljgilliland.blogspot.co.za/2013/01/one-line-fizz-buzz-test-in-python.html">here</a> that does exactly the same thing as my script of 23 lines so I thought I'd share it:  

````
print('\n'.join("Fizz"*(i%3==0)+"Buzz"*(i%5==0) or str(i) for i in range(0,101)))
````

This made me a little depressed.
👍  , , , , , , ,
properties (23)
authorbenniebanana
permlinkre-reggaemuffin-introducing-the-coding-challenge-20170817t151818433z
categorycoding-challenge
json_metadata{"tags":["coding-challenge"],"app":"steemit/0.1","links":["http://michaeljgilliland.blogspot.co.za/2013/01/one-line-fizz-buzz-test-in-python.html"]}
created2017-08-17 15:18:18
last_update2017-08-17 16:57:42
depth1
children5
last_payout2017-08-24 15:18:18
cashout_time1969-12-31 23:59:59
total_payout_value0.436 HBD
curator_payout_value0.137 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length1,406
author_reputation875,530,017,816
root_title"Introducing the Coding Challenge"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id12,094,236
net_rshares164,600,576,083
author_curate_reward""
vote details (8)
@reggaemuffin ·
$0.02
One suggestion I would have is keep the return type of fizzbuzz consistent. So I would probably do a `string = str(n)` to ensure it is always a string.

I also think you have a bug in there, as the else only counts for the second if, not the first one, so for n=3 is will most likely print `3` and not `Fizz` ;)

On coding style: I would rename the `string` variable to something that conveys meaning and not type, maybe `return_text`

The one-liner is pretty ugly in my opinion, your version is way more maintainable.
👍  
properties (23)
authorreggaemuffin
permlinkre-benniebanana-re-reggaemuffin-introducing-the-coding-challenge-20170817t172427039z
categorycoding-challenge
json_metadata{"tags":["coding-challenge"],"app":"steemit/0.1"}
created2017-08-17 17:24:30
last_update2017-08-17 17:24:30
depth2
children4
last_payout2017-08-24 17:24:30
cashout_time1969-12-31 23:59:59
total_payout_value0.023 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length518
author_reputation37,964,839,695,531
root_title"Introducing the Coding Challenge"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id12,104,149
net_rshares6,931,827,479
author_curate_reward""
vote details (1)
@benniebanana · (edited)
$0.37
Ah man I didn't even pick up on that. Thanks for the feedback though, appreciated. As for the str(n) I actually had that in there and decided to take it out haha, don't know why though. Will keep my original answer as is so other people might learn from my mistakes :) . Here's an updated one after following your advice, not sure if it's very efficient but it doesn't have any bugs anymore lol 

```` 
def fizzbuzz(n):

    try:
        if n%3 == 0 and n%5 == 0:
            text = "FizzBuzz"
        elif n%3 == 0:
            text = "Fizz"
        elif n%5 == 0:
            text = "Buzz"
        else:
            text = str(n)

        return text

    except TypeError:
        return "Error: Not a Number!"

def main():
    for n in range(101):
        print(fizzbuzz(n))

if __name__ == '__main__':
    main()
````
👍  
properties (23)
authorbenniebanana
permlinkre-reggaemuffin-re-benniebanana-re-reggaemuffin-introducing-the-coding-challenge-20170817t173128127z
categorycoding-challenge
json_metadata{"tags":["coding-challenge"],"app":"steemit/0.1"}
created2017-08-17 17:31:27
last_update2017-08-17 17:44:48
depth3
children3
last_payout2017-08-24 17:31:27
cashout_time1969-12-31 23:59:59
total_payout_value0.303 HBD
curator_payout_value0.063 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length822
author_reputation875,530,017,816
root_title"Introducing the Coding Challenge"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id12,104,637
net_rshares105,617,815,737
author_curate_reward""
vote details (1)
@reggaemuffin ·
That looks pretty efficient to me :) Well done!

I like your try except btw, that is exactly the python way of asking for forgiveness, not for permission. 

Here is a tip! for getting back on it and improving it :) 

If you want you can look at my solution, I made a few things that make it more maintainable (but it get's longer with it) so I would love to hear your feedback on that.

And I would be glad if you would make a small post about it explaining how you tackeled the task, what your thinking was etc. :)
properties (22)
authorreggaemuffin
permlinkre-benniebanana-re-reggaemuffin-re-benniebanana-re-reggaemuffin-introducing-the-coding-challenge-20170817t175240016z
categorycoding-challenge
json_metadata{"tags":["coding-challenge"],"app":"steemit/0.1"}
created2017-08-17 17:52:42
last_update2017-08-17 17:52:42
depth4
children1
last_payout2017-08-24 17:52:42
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length515
author_reputation37,964,839,695,531
root_title"Introducing the Coding Challenge"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id12,106,337
net_rshares0
@tipu ·
<table><tr><td>http://i.imgur.com/IFF4CSc.jpg</td><td><p><strong>Hi @benniebanana! You have just received a 0.5 SBD tip from @reggaemuffin!</strong></p><hr><p><a href="https://steemit.com/steemit/@tipu/tipu-quick-guide" rel="noopener">@tipU - send tips by writing tip! in the comment and get share in service profit :)</a></p></td></tr></table>
properties (22)
authortipu
permlinkre-re-reggaemuffin-re-benniebanana-re-reggaemuffin-introducing-the-coding-challenge-20170817t173128127z-20170817t175257
categorycoding-challenge
json_metadata""
created2017-08-17 17:52:57
last_update2017-08-17 17:52:57
depth4
children0
last_payout2017-08-24 17:52:57
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length344
author_reputation55,916,319,164,488
root_title"Introducing the Coding Challenge"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id12,106,356
net_rshares0