##Example 1 def passerRating(attempts,completed,yards,touchdowns,interceptions): partA=(((completed/attempts)*100)-30)/20 if partA>2.375: partA=2.375 elif partA<0: partA=0 else: partA=partA partB=((yards/attempts)-3)/4 if partB>2.375: partB=2.375 elif partB<0: partB=0 else: partB=partB partC=(touchdowns/attempts)*20 if partC>2.375: partC=2.375 elif partC<0: partC=0 else: partC=partC partD=2.375-((interceptions/attempts)*25) if partD>2.375: partD=2.375 elif partD<0: partD=0 else: partD=partD passerRating=round(((partA+partB+partC+partD)/6)*100,2) return passerRating def ratingCategory(passerRating): if passerRating<=85: ratingCategory="Bad" elif 90>=passerRating>85: ratingCategory="Mediocre" elif 95>=passerRating>90: ratingCategory="Good" else: ratingCategory="Great" return ratingCategory def addColumns(filename_in,filename_out): fin = open(filename_in,"r") fout = open(filename_out, "w") header = fin.readline() fout.write(header[:-1]) fout.write(","+"PasserRating"+","+"Classification\n") for row in fin: data = row.split(",") attempts=int(data[6]) completed=int(data[5]) yards=int(data[7]) touchdowns=int(data[8]) interceptions=int(data[9]) partA=float(((completed/attempts)*100)-30)/20 if partA>2.375: partA=2.375 elif partA<0: partA=0 else: partA=partA partB=float((yards/attempts)-3)/4 if partB>2.375: partB=2.375 elif partB<0: partB=0 else: partB=partB partC=float(touchdowns/attempts)*20 if partC>2.375: partC=2.375 elif partC<0: partC=0 else: partC=partC partD=float(2.375-((interceptions/attempts)*25)) if partD>2.375: partD=2.375 elif partD<0: partD=0 else: partD=partD passerRating=round(((partA+partB+partC+partD)/6)*100,2) if passerRating<=85: Classification="Bad" elif 90>=passerRating>85: Classification="Mediocre" elif 95>=passerRating>90: Classification="Good" else: Classification="Great" fout.write(row[:-1]) fout.write(","+str(passerRating)+","+str(Classification)+"\n") fin.close() fout.close() ######################### ##Example 2 def passerRating(att,comp,yards,tds,ints): A = ((comp/att*100)-30)/20 B = (yards/att - 3)/4 C = tds/att*20 D = 2.375 - (ints/att*25) A = adjust (A) B = adjust (B) C = adjust (C) D = adjust (D) return ((A+B+C+D)/6)*100 def adjust(number): if number<0: return 0 if number>2.375: return 2.375 return number def ratingCategory(rating): if rating<= 85: return "Bad" if rating <=90: return "Mediocre" if rating <=95: return "Good" return "Great" def addColumns(ifile,ofile): fin = open(ifile,"r") fout = open(ofile,"w") header = fin.readline() fout.write(header.strip()+",PasserRating,Classification\n") for player in fin: fout.write(player.strip()) data = player.split(",") c = int(data[5]) a = int(data[6]) y = int(data[7]) td = int(data[8]) i = int(data[9]) rating = passerRating(a,c,y,td,i) category = ratingCategory(rating) fout.write(","+str(rating)+","+category+"\n") fout.close() fin.close() ######################### ##Example 3 def passerRating(ap, cp, py, td, i): completion = ((cp/ap)*100 -30)/20 if completion > 2.375: completion = 2.375 if completion < 0: completion = 0 yards = ((py/ap)-3)/4 if yards > 2.375: yards = 2.375 if yards < 0: yards = 0 touchdown = (td/ap)*20 if touchdown > 2.375: touchdown = 2.375 if touchdown < 0: touchdown = 0 interception = 2.375-((i/ap)*25) if interception > 2.375: interception = 2.375 if interception < 0: interception = 0 rating2 = ((completion+yards+touchdown+interception)/6)*100 rating = round(rating2,2) return(rating) def ratingCategory (rating): if rating <= 85: cat = "Bad" return(cat) if rating <= 90: cat = "Mediocre" return(cat) if rating <= 95: cat = "Good" return(cat) if rating > 95: cat = "Great" return(cat) def addColumns(filename_in,filename_out): fin = open(filename_in,"r") fout = open(filename_out, "w") header = fin.readline() fout.write(header[:-1] + ",PasserRating,Classification"+"\n") for row in fin: data = row.split(",") ap = int(data[6]) cp = int(data[5]) py = int(data[7]) td = int(data[8]) i = int(data[9]) pr = passerRating(ap, cp, py, td, i) fout.write(row[:-1]+","+str(pr)+",") classification = ratingCategory (pr) fout.write(classification+"\n") fin.close()