Name: Anonymous 2012-11-07 21:49
newbie here, I need help with an assignment
When I run this I keep getting "list index out of range". I assume it's because my while statement is pretty much ineffective as a sentinel. I have no idea how to fix it, though (the input file is after the code):
def setup ():
print ()
print ("Player Team At Bats Hits Walks Avg OnBase%")
print ("----------------------------------------------------------------------------------")
def table ():
inFile = open ("baseball", "r")
data = inFile.readline ()
walkSum = 0
tBatAvg = 0
maxm = -1000000
minm = 10000000
while data != " ":
data = data.split (",")
name = data [0]
team = data [1]
atBats = eval (data [2])
hits = eval (data [3])
walks = eval (data [4])
batAvg = (hits / atBats) * 1000
onBase = ((hits + walks) / (atBats + walks)) * 1000
walkSum = walkSum + walks
tBatAvg = tBatAvg + batAvg
if batAvg > maxm:
maxm = batAvg
maxmName = name
if walks < minm:
minm = walks
minmName = name
print ("{0:19}{1:21}{2:6}{3:7}{4:8}{5:10.1f}{6:11.1f}".format (name, team, atBats, hits, walks, batAvg, onBase))
data = inFile.readline ()
print ("----------------------------------------------------------------------------------")
print ("Highest Batting Average:", maxmName, ":", maxm)
print ("Lowest Number of Walks:", minmName, ":", minm)
print ("Total Walks:", walkSum)
print ("Total Batting Average :", (tBatAvg / 6))
print ("\n")
def main ():
setup ()
table ()
main ()
Miguel Cabrera, Detroit Tigers, 622, 205, 66
Albert Pujols, Los Angels Angels, 607, 173, 52
David Ortiz, Boston Red Sox, 324, 103, 56
Carlos Beltran, St. Louis Cardinals, 547, 147, 65
Hunter Pence, San Francisco Giants, 617, 156, 56
Derek Jeter, New York Yankees, 683, 216, 45
When I run this I keep getting "list index out of range". I assume it's because my while statement is pretty much ineffective as a sentinel. I have no idea how to fix it, though (the input file is after the code):
def setup ():
print ()
print ("Player Team At Bats Hits Walks Avg OnBase%")
print ("----------------------------------------------------------------------------------")
def table ():
inFile = open ("baseball", "r")
data = inFile.readline ()
walkSum = 0
tBatAvg = 0
maxm = -1000000
minm = 10000000
while data != " ":
data = data.split (",")
name = data [0]
team = data [1]
atBats = eval (data [2])
hits = eval (data [3])
walks = eval (data [4])
batAvg = (hits / atBats) * 1000
onBase = ((hits + walks) / (atBats + walks)) * 1000
walkSum = walkSum + walks
tBatAvg = tBatAvg + batAvg
if batAvg > maxm:
maxm = batAvg
maxmName = name
if walks < minm:
minm = walks
minmName = name
print ("{0:19}{1:21}{2:6}{3:7}{4:8}{5:10.1f}{6:11.1f}".format (name, team, atBats, hits, walks, batAvg, onBase))
data = inFile.readline ()
print ("----------------------------------------------------------------------------------")
print ("Highest Batting Average:", maxmName, ":", maxm)
print ("Lowest Number of Walks:", minmName, ":", minm)
print ("Total Walks:", walkSum)
print ("Total Batting Average :", (tBatAvg / 6))
print ("\n")
def main ():
setup ()
table ()
main ()
Miguel Cabrera, Detroit Tigers, 622, 205, 66
Albert Pujols, Los Angels Angels, 607, 173, 52
David Ortiz, Boston Red Sox, 324, 103, 56
Carlos Beltran, St. Louis Cardinals, 547, 147, 65
Hunter Pence, San Francisco Giants, 617, 156, 56
Derek Jeter, New York Yankees, 683, 216, 45