[Tutor] File I/O help

Steve Willoughby steve at alchemy.com
Thu Jul 23 09:38:59 CEST 2009


On Wed, Jul 22, 2009 at 10:48:49PM -0500, Chris Castillo wrote:
> *I'm supposed to be reading in names a grades from a text file like so:
> *
> Chris
> 100
> 89
> 76
> 0

My Spidey Senses are picking up "homework assignment", so I'll try to 
nudge you in a general direction without doing your work for you.

> from myFunctions import *

I'm curious about this... is this a way for you to organize your code
into multiple modules?  I'd suggest looking at dividing things up into
classes or modules by topic, not just a "dumping ground for a bunch of
functions I use often" (which is what I'm guessing here).

> inputFile = open("input.txt", "r" )    # Read in a file with student names a
> grades
> 
> for line in open("input.txt", "r"):    # iterate through txt file with names
> and grades

You're opening the file twice, which probably isn't what you wanted.

>     if line.strip().isdigit():
>         grade = float(line)    # convert score into float type
>         gradeTotal += grade    # adds score to running total
>         if grade != 0:
>             grade = grades.append(grade)
>     else:
>         name = line.strip()
>         name = names.append(name)    # Append name to names list
> 
> studentTotal = str(len(names))    # Get student total

Why do you want to turn the number of students into a string?  While 
you're at it, look at the return value from the append method for
lists.  What are you accomplishing by assigning that back onto the
variables grade and name above?

> grades.sort() # Sort the grades in ascending order

All the grades?  Seems like you need a way to keep track of the
grades for each individual student?  Maybe some kind of collection
object which can store things by name?


-- 
Steve Willoughby    |  Using billion-dollar satellites
steve at alchemy.com   |  to hunt for Tupperware.


More information about the Tutor mailing list