Comp 150 – Computer Programming 1

February 28, 2008

 

1.         Lab08a1.py – Letter grade program


#

#  File: Lab08a1.py

#  Date: February 28, 2008

#

#  Desc: Read list of grades; computes average. Displays

#        average and corresponding letter grade

 

def getGrades():

    #

    #   gets and returns list of grades

    #

    numGrades = input("Enter the number of grades to average: ")

    print "Enter %d grades" % numGrades

    gradeList = []

    for i in range(numGrades):

        grade = input("? ")

        gradeList = gradeList + [grade]

    return gradeList

 

def computeAverage(list):

    #

    #   computes and returns average value of a list of numbers

    #

    sum = 0.0

    for i in range(len(list)):

        sum = sum + list[i]

    average = sum / len(list)

    return average

   

def computeLetterGrade(average):

    #

    #   computes and returns letter grade given numeric average

    #

    if (average >= 90.0):

        letterGrade = "A"

    elif (average >= 80.0):

        letterGrade = "B"

    elif (average >= 70.0):

        letterGrade = "C"

    elif (average >= 60.0):

        letterGrade = "D"

    else:

        letterGrade = "F"

    return letterGrade

 

def displayResults(average, letterGrade):

    #

    #  displays grade average and letter grade

    #

    print

    print "The grade average is %6.2f" % average

    print "The letter grade is %s" % letterGrade

    print

   

def main():

 

    #  display program title

   

    print "\nGrade Program\n"

 

    #  get grades

 

    gradeList = getGrades()

 

    #  compute average

 

    average = computeAverage(gradeList)

 

    #  compute letter grade

 

    letterGrade = computeLetterGrade(average)

 

    #  display results

   

    displayResults(average, letterGrade)

 

main()   

    

2.         Lab08b.py – Day number program

 

#

#  File:  Lab08b.py

#  Date:  February 28, 2008 

#

#  Desc:  Computes day number

#

 

def isLeapYear(year):

    #

    #  returns True if year is a leap year

    #

    return (year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0)

 

def main():

 

    #  display program title

 

    print "\nDay of Year Program\n"

 

    #   ask-before-iterating loop

 

    again = "y"

    while (again == "y"):

 

        try:        # start exception handler for bad input

 

        #   get date

       

            month, day, year = input("Enter month, day, year: ")

 

        #   compute day of year

       

            dayNum = 31 * (month - 1) + day

            if (month > 2):

                dayNum = dayNum - (4 *month + 23)/10

 

            if (isLeapYear(year) and month >= 3):

                dayNum = dayNum + 1

 

        #   display results

 

            print

            print "%d/%d/%d is day %d of the year" % (month, day, year, dayNum)

            print

 

        except:

            print "\nInput error ",

 

        #   ask to go again?

       

        again = raw_input("Again? (y/n): ")

        print

 

main()   

 

3.         Lab08c.py – Detecting illegal dates

 

#

#  File:  Lab08c.py

#  Date:  February 28, 2008

#

#  Desc:  Detects illegal dates

#

 

import string

 

def isLeapYear(year):

    #

    #  returns True if year is leap year

    #

    return (year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0)

 

def main():

 

    #  display program title

 

    print "\nProgram to test for legal/illegal dates\n"

 

    #  ask-before-iterating loop

 

    again = "y"

    while (again == "y"):

 

        #  get date

 

        print

        date = raw_input("Enter date in mm/dd/yyyy format: ")

        print

 

        #  extract month, day and year as integer types

 

        m, d, y = string.split(date, "/")

 

        month = int(m)

        day = int(d)

        year = int(y)

 

        #  check for valid date

   

        if (((month == 1) or (month == 3)  or (month == 5) or (month == 7) or

             (month == 8) or (month == 10) or (month == 12)) and

             ((day >= 1) and (day <= 31))):

            print date, "is legal"

       

        elif (((month == 4) or (month == 6) or (month == 9) or (month == 11)) and

              ((day >= 1) and (day <= 30))):

            print date, "is legal"

 

        elif ((month == 2) and isLeapYear(year) and (day >= 1) and (day <= 29)):

            print date, "is legal"

 

        elif ((month == 2) and not isLeapYear(year) and (day >= 1) and (day <= 28)):

            print date, "is legal"

 

        else:

            print date, "is not legal"

 

        #  ask to go again?  

 

        print

        again = raw_input("Again? (y/n): ")

        print

                                 

main()   

 

4.         Lab08c1.py – Same as Lab08c.py expect a file while loop is introduced

 

#

#  File:  Lab08c1.py

#  Date:  February 28, 2008

#

#  Desc:  Detects illegal dates; incorporates a while filter loop

#

 

import string

 

def isLeapYear(year):

    #

    #  returns True if year is leap year

    #

    return (year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0)

 

def main():

 

    #  display program title

 

    print "\nProgram to test for legal/illegal dates\n"

 

    #  ask-before-iterating loop

 

    again = "y"

    while (again == "y"):

 

        #  filter while loop

 

        ok = False      # initialize ok to False to force while loop

        while (not ok):

           

            try:        # initialize exception handler

 

            #   get date

           

                print

                date = raw_input("Enter date in mm/dd/yyyy format: ")

                print

 

            #  extract month, day and year as integer types

 

                m, d, y = string.split(date, "/")

 

                month = int(m)

                day = int(d)

                year = int(y)

                ok = True    #  input in valid format - set ok to exit loop

           

            except:

                print"Input Error - try again"

                ok = False       #  - set ok to loop again

                   

 

        #  check for valid date

   

        if (((month == 1) or (month == 3)  or (month == 5) or (month == 7) or

             (month == 8) or (month == 10) or (month == 12)) and

             ((day >= 1) and (day <= 31))):

            print date, "is legal"

       

        elif (((month == 4) or (month == 6) or (month == 9) or (month == 11)) and

              ((day >= 1) and (day <= 30))):

            print date, "is legal"

 

        elif ((month == 2) and isLeapYear(year) and (day >= 1) and (day <= 29)):

            print date, "is legal"

 

        elif ((month == 2) and not isLeapYear(year) and (day >= 1) and (day <= 28)):

            print date, "is legal"

 

        else:

            print date, "is not legal"

 

        #  ask to go again?

 

        print

        again = raw_input("Again? (y/n): ")

        print

       

 

                         

main()