Andy
Andy

Reputation: 10830

Why do I get a SyntaxError from a simple line of code with nothing wrong?

I have this code from a tutorial:

#File called test
def sanitize(time_string):
        if '-' in time_string:
                splitter = '-'
        elif ':' in time_string:
                splitter = ':'
        else:
                return(time_string)
        (mins, secs) = time_string.split(splitter)
        return(mins + '.' + secs)
 
 
         
 def get_coach_data(filename):
         with open(filename) as f:
                 data = f.readline()
         temp1 = data.strip().split(',')
         return(Athlete(temp1.pop(0), temp1.pop(0), temp1)
 
 
 james = get_coach_data('james2.txt')
 julie = get_coach_data('julie2.txt')
 mikey = get_coach_data('mikey2.txt')
 sarah = get_coach_data('sarah2.txt')
 
 print(james.name+"'s fastest times are: " + str(james.top3()))
 print(juliename+"'s fastest times are: " + str(julie.top3())) 
 print(mikey.name+"'s fastest times are: " + str(mikey.top3()))
 print(sarah.name+"'s fastest times are: " + str(sarah.top3()))

and I put this class separately because I thought it may have been causing the error:

 class Athlete:
         def __init__(self, a_name, a_dob=None, a_times=[]):
                 self.name = a_name
                 self.dob = a_dob
                 self.times = a_times
 
         def top3(self):
                 return(sorted(set([sanitize(t) for t in self.times]))[0:3])

The traceback points to a SyntaxError at line 20 (james = get_coach_data('james2.txt'))

What is wrong?

Upvotes: -2

Views: 557

Answers (1)

Dan D.
Dan D.

Reputation: 74645

The errors that I can see are:

  1. return(Athlete(temp1.pop(0), temp1.pop(0), temp1)
    

    in get_coach_data should just be

    return Athlete(temp1.pop(0), temp1.pop(0), temp1)
    

    on line 17

  2. juliename should be julie.name on line 26

Upvotes: 2

Related Questions