Newbee Question

Discussion in 'Python' started by HD1956, Aug 20, 2007.

  1. HD1956

    HD1956 Guest

    This is probably a simple code. I am a truck driver who gets paid by
    stops and cases. I am trying to figure out how to code my stop pay. I
    get 40 cents per stop up to 22 stops, and $1.40 per stops after that.
     
    HD1956, Aug 20, 2007
    #1
    1. Advertisements

  2. HD1956

    kyosohma Guest

    def calc(num):
    if num < 23:
    return 0.4 * num
    else:
    overtime = num - 22
    x = 0.4 * 22
    x += overtime * 1.4
    return x

    # Use your own brain next time

    Mike
     
    kyosohma, Aug 20, 2007
    #2
    1. Advertisements




  3. Mike,

    I wonder if we were both just duped into helping someone with their homework...

    Shawn
     
    Shawn Milochik, Aug 20, 2007
    #3
  4. Sounds a bit like homework. Which usually isn't simply delivered here.

    Can you show us some code you worked on, then we might suggest enhancements.

    Diez
     
    Diez B. Roggisch, Aug 20, 2007
    #4
  5. HD1956

    kyosohma Guest

    I like to write code, so it's not a big deal when it's something so
    simple. Still, that is beyond dumb! Nice code, by the way.

    Mike
     
    kyosohma, Aug 20, 2007
    #5
  6. I like to write code, so it's not a big deal when it's something so
    Yeah, it was fun to write anyway. Thanks for the compliment on the
    code. I still consider myself a Python newbie, so it's good to know
    I'm not trying to write it like Perl or VBScript anymore. ^_^

    Shawn
     
    Shawn Milochik, Aug 20, 2007
    #6
  7. Wrong! Usually that happens pretty quickly here (as proven again in this
    case). Not that it should, but only the seniors seem to detect lazy
    learners.

    /W
     
    Wildemar Wildenburger, Aug 20, 2007
    #7
  8. HD1956

    Paul McGuire Guest

    You'll get top marks for turning in the shortest program!

    norm = 0.4
    ot = 1.4-norm
    otStart = 22
    calcPay = lambda stops : norm*stops+ot*max(stops-otStart,0)

    -- Paul
     
    Paul McGuire, Aug 20, 2007
    #8
  9. HD1956

    Neil Cerutti Guest

    I wish *I* could make a deal like that. I stop working all the
    time!
     
    Neil Cerutti, Aug 20, 2007
    #9
  10. HD1956

    hd1956 Guest

    Thanks for the help. By the way I am trying to learn the python after
    work and on weekends. If it was a dumb question, to this group, I will
    not bother you all again.
    Without help it will take me longer to learn. Thanks
     
    hd1956, Aug 20, 2007
    #10
  11. HD1956

    James Stroud Guest

    Throw out an example of what you tried with an error message and/or
    unexpected results. Ask particulars--this will keep you from giving
    truck drivers a bad name.

    Sticking-my-fist-out-window-and-making-pulling-down-gesture-ly yours,

    James



    --
    James Stroud
    UCLA-DOE Institute for Genomics and Proteomics
    Box 951570
    Los Angeles, CA 90095

    http://www.jamesstroud.com/
     
    James Stroud, Aug 21, 2007
    #11
  12. HD1956

    Asun Friere Guest

    Oh well since a few solutions have already been posted I thought I
    might add another, just so you at the very least you have to do some
    work making up your mind which one to choose. Using an incremental
    approach just to be different ...

    from decimal import Decimal

    normal = Decimal('0.04')
    over = Decimal('1.40)

    def calcStopPay (stops) :
    pay = Decimal('0.00')
    while stops :
    incr = normal if stops < 23 else over
    pay += incr
    stops -= 1
    return pay

    #testing:
    for x in range(50) :
    print "Stop pay for %s stops: $%s" % (x, calcStopPay(x))
     
    Asun Friere, Aug 21, 2007
    #12
  13. HD1956

    Asun Friere Guest

    oops, that should of course be:
    over = Decimal('1.40')
     
    Asun Friere, Aug 21, 2007
    #13
  14. HD1956

    Asun Friere Guest

    oh boy ... and it should also be
    normal = Decimal('0.40')

    I really need to test before posting ...
     
    Asun Friere, Aug 21, 2007
    #14
  15. pay = min(num, 22) * 0.4 + max(num-22, 0) * 1.4
    --
    Wulfraed Dennis Lee Bieber KD6MOG

    HTTP://wlfraed.home.netcom.com/
    (Bestiaria Support Staff: )
    HTTP://www.bestiaria.com/
     
    Dennis Lee Bieber, Aug 21, 2007
    #15
  16. HD1956

    Ant Guest

    On Aug 20, 11:47 pm, wrote:
    ....
    It's not so much that it was a dumb question, but that it was asked in
    a dumb way :) You'll get the most help in this group if you can show
    some evidence that you've had a go (the size of this thread ironically
    trounces that argument of course ;-) .)

    It's better to learn if people give you a critique of your own attempt
    at the code, rather than looking at other peoples efforts. There's a
    guide on how to ask good questions here: http://www.catb.org/~esr/faqs/smart-questions.html

    For what it's worth, here's a gratuitous version using generators, and
    one you should come back to once you've mastered the basics of Python:

    def counter(std_rate, over_rate, limit):
    stops = 0
    while True:
    stops += 1
    wage = stops * std_rate + max(0, stops - limit) * (over_rate -
    std_rate)
    yield stops, wage

    truck = counter(0.4, 1.4, 22)

    for i in range(30):
    print "Stopped %s times, with accumulated wage of $%s" %
    truck.next()
     
    Ant, Aug 21, 2007
    #16
  17. HD1956

    Steve Holden Guest

    Don't worry about it. There is also a list specifically for learners,
    which you can find out about at

    http://mail.python.org/mailman/listinfo/tutor

    Welcome to the Python community!

    regards
    Steve
    --
    Steve Holden +1 571 484 6266 +1 800 494 3119
    Holden Web LLC/Ltd http://www.holdenweb.com
    Skype: holdenweb http://del.icio.us/steve.holden
    --------------- Asciimercial ------------------
    Get on the web: Blog, lens and tag the Internet
    Many services currently offer free registration
    ----------- Thank You for Reading -------------
     
    Steve Holden, Aug 21, 2007
    #17
  18. HD1956

    Steve Holden Guest

    Don't worry about it. There is also a list specifically for learners,
    which you can find out about at

    http://mail.python.org/mailman/listinfo/tutor

    Welcome to the Python community!

    regards
    Steve
    --
    Steve Holden +1 571 484 6266 +1 800 494 3119
    Holden Web LLC/Ltd http://www.holdenweb.com
    Skype: holdenweb http://del.icio.us/steve.holden
    --------------- Asciimercial ------------------
    Get on the web: Blog, lens and tag the Internet
    Many services currently offer free registration
    ----------- Thank You for Reading -------------
     
    Steve Holden, Aug 21, 2007
    #18
  19. HD1956

    hd1956 Guest

    I tryed your code and got an error message #I use Wing IDE:
    Python 2.2.3 (#42, May 30 2003, 18:12:08) [MSC 32 bit (Intel)]
    Type "help", "copyright", "credits" or "license" for more information.Evaluating lines 1-16 from truckStops.py
    <string>:7: Warning: 'yield' will become a reserved keyword in the
    future
    Could not execute because an error occurred:
    invalid syntax: <string>, line 7, pos 19:
    yield stops, wage
     
    hd1956, Aug 21, 2007
    #19
  20. Python 2.2.3 is three versions behind. Generators only work in 2.2 by
    saying:

    from __future__ import generators

    And by default in anything from 2.3 on.

    Fred
     
    sentientholon, Aug 21, 2007
    #20
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.