[Tutor] reading complex data types from text file

Chris Castillo ctcast at gmail.com
Mon Jul 20 04:56:30 CEST 2009


okay so I figured my program out. I am posting the final version so if
someone else is having problems with something like this it may benefit the
community. (comments are included to help those who might not understand the
code)
------------------------------------------------------------------------------------------------------------
'''
Program reads names of bowlers and their corresponding scores,
then writes their names to a new text file with a description
of either below average, average, above average or a perfect score
'''

scores = {}    # empty dictionary
total = 0    #initalize total to 0 value


for line in open("bowlingscores.txt", "r"):    # iterate through txt file
with names and scores
    if line.strip().isdigit():
        score = int(line)    # convert score into int type
        scores[name] = score    # add scores to dictionary
        total += score    # add score to running total
    else:
        name = line.strip()    # if the line isn't a digit name will be the
key in the dictionary



averageScore = total / len(scores)    # get average of all scores
fileOut = open("bowlingaverages.txt", "w")    # create a file to write names
and scores to
fileOut.write("Bowling Report\n" + ("-" * 50) + "\n")    # header


for name, score in scores.items():    #iterate through each score in the
dictionary to get an score value for each player
    if score == 300:
        score = "\tPerfect score!\n"
        scores[name] = score
    elif score < averageScore:
        score = "\tBelow average\n"
        scores[name] = score
    elif score > averageScore:
        score = "\tAbove average!\n"
        scores[name] = score
    else:
        score = "\tAverage!\n"
        scores[name] = score

for items in scores.items():    #iterate through the items in the dictionary
and format them to the output file
    fileOut.write("%s%s\n" % items)
---------------------------------------------------------------------------------------
your output for this code should look like this inside the text file:

*Bowling Report
--------------------------------------------------
sue    Below average

bill    Above average!

nat    Below average

tom    Perfect score!*



Thanks to everyone who helped me with this.

On Sun, Jul 19, 2009 at 12:15 AM, Chris Castillo <ctcast at gmail.com> wrote:

> so could I also replace the score of each bowler (key value) in the
> dictionary with a new key such as "below average" or "above average"
> according to each if-elif-else structure and then write to a text file in
> the following format?
>
> Jim     Above Average
> Sue    Below Average
> Bob    Perfect score
>
>
> On Fri, Jul 17, 2009 at 12:48 PM, bob gailer <bgailer at gmail.com> wrote:
>
>> Chris Castillo wrote:
>>
>>> how would i go about adding the names to a dictionary as a key and the
>>> scores as a value in this code?
>>>
>>>
>>>  # refactored for better use of Python, correct logic, and flow
>>
>> scores = {} # empty dictionary
>> total = 0
>> for line in open("bowlingscores.txt", "r"):
>>   if line.strip().isdigit():
>>       score = int(line)
>>       scores[name] = score
>>       total += score
>>   else:
>>       name = line.strip()
>> averageScore = total / len(scores)
>> fileOut = open("bowlingaverages.txt", "w")
>> fileOut.write("Bowling Report\n" + ("-" * 50) + "\n")
>> for name, score in scores.items():
>>  if score == 300:
>>      score = "\tPerfect score!"
>>  elif score < averageScore:
>>      score = "\tBelow average"
>>  elif score > averageScore:
>>      score = "\tAbove average!"
>>  else:
>>      score = "\tAverage!"
>>  print name, score
>>
>>
>> --
>> Bob Gailer
>> Chapel Hill NC
>> 919-636-4239
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20090719/b002c93d/attachment.htm>


More information about the Tutor mailing list