Grow your CSS skills. Land your dream job.

Python question: I need to make this code more DRY:

  • NIX
    # February 18, 2014 at 12:15 am

    I have an elif and an else that are repeated in this code. However, I can’t find another way to incorporate these without breaking my very simple program.

    What do you guys suggest?

    By the way… I’m aware this program does basically nothing at the moment. I just started it like an hour ago.

    Thanks!

    NIX
    # February 18, 2014 at 12:17 am

    I also have raw_input() way too many times.

    __
    # February 18, 2014 at 2:23 pm

    Apparently, elif/else is the preferred solution where other languages might use a switch statement. I don’t really like the way it looks, but I have to admit the reasoning is sound and it works the same way (which the exception of case fall-through, which is arguably more of a bug than a feature).

    As for raw_input, I disagree: just because you have to do it in most cases doesn’t mean it’s not dry. The alternative is to put it into a function that does the same thing, but then you have to call that function repeatedly, so what have you accomplished? un-pythonic.

    Another possibility would be

    while running == True:
    
        status = raw_input()
    
        if clockedIn = False:
        # etc. ...
    

    Obviously, the status doesn’t need to be updated when you stop, but would it hurt anything?

    NIX
    # February 18, 2014 at 6:11 pm

    Wait… Are you saying not to use if? What if I need a 3-way logical fork? Hmmm. I guess I could figure out another way.

    __
    # February 18, 2014 at 6:56 pm

    Wait… Are you saying not to use if?

    umm… no

    Sorry, I think we got mixed up somewhere. Given your situation, I would normally use a switch statement. Given the fact that python doesn’t have a switch statement, I would use if/elif/else (as you did). I was just pointing out that that appears to be the “correct” solution anyway.

    If you’re talking about the raw_input question, I was asking if you could just leave out the status assignment in each case, since you already did it anyway (at the beginning of the while loop). Is there a reason for assigning it again?

    # February 18, 2014 at 7:05 pm

    I’m not a Python developer. But found this, might be helpful: http://code.activestate.com/recipes/410692/

    NIX
    # February 18, 2014 at 8:27 pm

    I’m going to look at both of these more closely and see what I can do about this.

    I just don’t like that it’s already 50 lines and barely does anything.

    NIX
    # February 18, 2014 at 9:53 pm

    I wrote this stupidly because I’m printing all the questions/prompts. I could just use raw_input(arg) and put the prompt where the arg is. Plus, I’m pretty sure I could use argv instead of raw_input. There are only 3 options, raw_input isn’t really the best idea here. It’s not like I’m going to perform some wizardry on whatever garbage string they give me. It’s either option 1, 2 or 3.

    Poorly written. But… that’s what new git commits are for!

    NIX
    # February 18, 2014 at 9:55 pm

    Thought I’d share this with you gentlemen:

    You’ve undoubtedly seen this but if you haven’t… you both know how to do math. I still find it interesting. Sometimes it’s good to spend time revamping your workflow… even if you have to write an app yourself.

    __
    # February 18, 2014 at 10:02 pm

    How about this? Just abstracted a few things.

    __
    # February 18, 2014 at 10:10 pm

    You’ve undoubtedly seen this…

    Yes, indeed.

    Have you seen this? Might help you understand your place in the world as you embark on learning this fine language

    programmer hierarchy

    NIX
    # February 18, 2014 at 10:10 pm

    I’m going to download this and run it a few times. There was a problem that was bothering me so much last night and now I can’t think of it. I need to run it and feed it a bunch of stuff to remember.

    Thanks @traq!

    NIX
    # February 18, 2014 at 10:14 pm

    Might help you understand your place in the world as you embark on learning this fine language.

    HA HA HA HA! So true! Although… DAMN! I had no idea everyone thinks they’re superior to Java programmers. I mean, I learned Java in a CS class like everybody else in college and didn’t like it but… I have a little more respect for that language in particular.

    Also… for me, C is the holy grail. When I can learn that, I’ll truly ‘feel’ like a real programmer.

    NIX
    # February 18, 2014 at 10:15 pm

    On a side note, I’m going to write everything for my BBB project in Python. It is literally the perfect choice for that project.

    NIX
    # February 18, 2014 at 10:22 pm

    To quote Zed Shaw:

    “If you are reading this book and flipping out at every third sentence because you feel I’m insulting your intelligence… Go learn Lisp. I hear people who know everything really like Lisp.”

Viewing 15 posts - 1 through 15 (of 23 total)

You must be logged in to reply to this topic.

*May or may not contain any actual "CSS" or "Tricks".