Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Newbee Question

2 views
Skip to first unread message

HD1956

unread,
Aug 20, 2007, 10:23:28 AM8/20/07
to pytho...@python.org
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.

kyos...@gmail.com

unread,
Aug 20, 2007, 10:51:10 AM8/20/07
to

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

Shawn Milochik

unread,
Aug 20, 2007, 10:55:25 AM8/20/07
to pytho...@python.org
#!/usr/bin/env python

normalPay = 0.4
overPay = 1.4
normalLimit = 22

def calcPay(numStops):

pay = 0

if numStops > normalLimit:
pay = overPay * (numStops - normalLimit)
numStops = normalLimit

return pay + (numStops * normalPay)

if __name__ == "__main__":

print "Pay for 1 stops: %.2f." % calcPay(1)
print "Pay for 10 stops: %.2f." % calcPay(10)
print "Pay for 17 stops: %.2f." % calcPay(17)
print "Pay for 25 stops: %.2f." % calcPay(25)
print "Pay for 30 stops: %.2f." % calcPay(30)
print "Pay for 31 stops: %.2f." % calcPay(31)

Shawn Milochik

unread,
Aug 20, 2007, 10:58:39 AM8/20/07
to pytho...@python.org
> --
> http://mail.python.org/mailman/listinfo/python-list
>


Mike,

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

Shawn

Diez B. Roggisch

unread,
Aug 20, 2007, 10:58:55 AM8/20/07
to
HD1956 schrieb:

> 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.
>

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

kyos...@gmail.com

unread,
Aug 20, 2007, 11:06:30 AM8/20/07
to
On Aug 20, 9:58 am, "Shawn Milochik" <Sh...@Milochik.com> wrote:

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

Shawn Milochik

unread,
Aug 20, 2007, 11:22:43 AM8/20/07
to pytho...@python.org
> 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

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

Wildemar Wildenburger

unread,
Aug 20, 2007, 11:23:29 AM8/20/07
to pytho...@python.org
Diez B. Roggisch wrote:
> Sounds a bit like homework. Which usually isn't simply delivered here.
>
>
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

Paul McGuire

unread,
Aug 20, 2007, 11:30:05 AM8/20/07
to
On Aug 20, 9:23 am, "HD1956" <hd7...@hotmail.com> wrote:

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

Neil Cerutti

unread,
Aug 20, 2007, 1:01:26 PM8/20/07
to

I wish *I* could make a deal like that. I stop working all the
time!

--
Neil Cerutti
Customers who consider our waitresses uncivil ought to see the manager --sign
at New York restaurant

hd1...@yahoo.com

unread,
Aug 20, 2007, 6:47:16 PM8/20/07
to
> Mike- Hide quoted text -
>
> - Show quoted text -

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

James Stroud

unread,
Aug 20, 2007, 8:46:37 PM8/20/07
to

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/

Asun Friere

unread,
Aug 21, 2007, 3:41:59 AM8/21/07
to
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))

Message has been deleted

Asun Friere

unread,
Aug 21, 2007, 3:54:53 AM8/21/07
to
On Aug 21, 5:51 pm, Asun Friere <afri...@yahoo.co.uk> wrote:
> On Aug 21, 5:41 pm, Asun Friere <afri...@yahoo.co.uk> wrote:> over = Decimal('1.40)
>
> oops, that should of course be:
> over = Decimal('1.40')

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

I really need to test before posting ...

Message has been deleted

Ant

unread,
Aug 21, 2007, 4:38:22 AM8/21/07
to
On Aug 20, 11:47 pm, hd1...@yahoo.com wrote:
...

> 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.

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...

http://antroy.blogspot.com/


Steve Holden

unread,
Aug 21, 2007, 7:31:53 AM8/21/07
to pytho...@python.org, pytho...@python.org
hd1...@yahoo.com wrote:
[...]

>
> 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
>
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

unread,
Aug 21, 2007, 7:31:53 AM8/21/07
to hd1...@yahoo.com, pytho...@python.org
hd1...@yahoo.com wrote:
[...]

>
> 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
>

hd1...@yahoo.com

unread,
Aug 21, 2007, 12:52:11 PM8/21/07
to
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

sentientholon

unread,
Aug 21, 2007, 1:03:39 PM8/21/07
to
On Aug 21, 11:52 am, "hd1...@yahoo.com" <hd1...@yahoo.com> wrote:
> 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

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

Dave Hansen

unread,
Aug 21, 2007, 2:25:29 PM8/21/07
to
On Aug 21, 2:57 am, Dennis Lee Bieber <wlfr...@ix.netcom.com> wrote:
[...]
>
> pay = min(num, 22) * 0.4 + max(num-22, 0) * 1.4

pay = num*0.4 + (num>22)*(num-22)

;-)

-=Dave

0 new messages