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