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
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)
Mike,
I wonder if we were both just duped into helping someone with their homework...
Shawn
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
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
/W
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
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
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
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
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))
oh boy ... and it should also be
normal = Decimal('0.40')
I really need to test before posting ...
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://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 -------------
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
pay = num*0.4 + (num>22)*(num-22)
;-)
-=Dave