"michael scott" <jigenbak...@yahoo.com> wrote
...if something about my code could be better, please tell me,

OK, Here are some stylistic things...

def production_time():
   creation_time = 127
   time_till_rest = 18161

I'd move the constants out of the function to global level.
And it is convention to make constants all CAPS:

CREATION_TIME = 127

Also rather than arbitrary values show how these are arrived at:

NUMBER_TILL_REST = 143
TIME_TILL_REST = CREATION_TIME * NUMBER_TILL_REST


   items = raw_input("How many items will be produced?\n> ")
   item_time = int(items) * creation_time
   rest_times = item_time/time_till_rest
   print rest_times
   if rest_times > 0:
total = item_time + (313 * rest_times) #313 is 5 min and 13 secs in
second form

Rather than the "magic number" 313 I'd make it another constant.:

REST_TIME = (5 * 60) + 13   # in seconds

   else: total = item_time
   time = sec_to_standard(total)
print "It would take %d days %d hours %d minutes and %d seconds to produce
that many items" %(time[0], time[1], time[2], time[3])


def sec_to_standard(seconds):
   day = 86400 #secs
   hour = 3600 #secs
   mins = 60#seconds
   creation_time = 127 #secs
   time_till_rest = 18161 #secs

More constants and some are duplicates.
Take them outside and you only have to change them in one place
so mainmtenance becomes easier. And the times get expressed as calculations:

MIN=60
HOUR = MINS * 60
DAY = HOUR * 24
REST_TIME=(5* MIN)+13

   days = 0
   hours = 0
   minutes = 0
   secs = 0

Some prefer the single line style of

days = hours = minutes = secs = 0

   if seconds > day:
       while seconds > day:
           print "doing days"
           seconds = seconds - day
           days += 1

This is a complicated way of doing modulo division!

days,seconds = divmod(seconds,DAY)

   if seconds > hour:
       while seconds > hour:
           print "doing hours"
           seconds = seconds - hour
           hours += 1

hours,seconds = divmod(seconds,HOUR)

           if hours >= 24:
               days += 1
               hours -= 24

This shouldn't be necessary because you already cut out the days

   if seconds > mins:
       while seconds > mins:
           print "doing minutes"
           seconds = seconds - mins
           minutes += 1

minutes,seconds = divmod(seconds,MIN)

           if minutes > 60:
               hours += 1
               minutes -= 60

Again it shoudn't be necessary but if it had been you would have
had to check the days again after increasing the hours...

   secs = seconds

You don't need this, just return seconds...

   return days, hours, minutes, secs

production_time()

Just some ideas.

--
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/


_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to