Terr_code - 5 months ago 3x

Python Question

I am trying to open a textfile called state_meet.txt file; the info is formatted as

gymnastics_school,participant_name,all-around_points_earned

see example:

`Lanier City Gymnastics,Ben W.,55.301`

Lanier City Gymnastics,Alex W.,54.801

Lanier City Gymnastics,Sky T.,51.2

Lanier City Gymnastics,William G.,47.3 etc..

and create functions to get info such as:

The total count of gymnasts that participated in the state meet.

The first place score.

The last place score.

The score differential between the first and last place.

The average score for all gymnasts.

The median score. (The median is the grade at the mid-point of a sorted list. If there is an even number of elements in the list, the median is the average of the 2 middle elements.)

The average of all scores above the median (not including the median).

The average of all scores below the median (not including the median).

The output should look as such

Summary of Data:

Number of gymnasts: 103

First place score: 143.94

Here's the code I have so far:

`with open('state_meet.txt','r') as f:`

for line in f:

allt = []

values = line.split()

print(values[3])

#first

max_val = max(values[3])

int(max_val)

print(max_val)

#last

min_val = min(values[3])

int(min_val)

print(min_val)

#Mean

total = sum(input_list)

length = len(input_list)

for nums in [input_list]:

mean_val = total / length

float(mean_val)

#Median

sorted(input_list)

med_val = sorted(lst)

lstLen = len(lst)

index = (lstLen - 1) // 2

this is what i have so far but my text is reading it as W.,55.301 instead of 55.301 and giving me errors

Answer

- You should use
`split(',')`

to replace`split()`

. - Use
`values[2]`

to get the third item of list`values`

. - list
`allt`

seems no use. - It seems that no matter how many lines are there in
`state_meet.txt`

,`values`

always gets the last line data.

I guess the things you want to do:

```
import collections
names = ["gymnastics_school", "participant_name", "all_around_points_earned"]
Data = collections.namedtuple("Data", names)
data = []
with open('state_meet.txt','r') as f:
for line in f:
line = line.strip()
items = line.split(',')
items[2] = float(items[2])
data.append(Data(*items))
max_one = max(data, key=lambda d:d.all_around_points_earned)
print(max_one.all_around_points_earned) # max val
min_one = min(data, key=lambda d:d.all_around_points_earned)
print(min_one.all_around_points_earned) # min val
total = sum(d.all_around_points_earned for d in data)
mean_val = total/len(data)
print(mean_val) # mean val
sorted_data = sorted(data, key=lambda d:d.all_around_poiints_earned)
if len(data)%2==0:
a = sorted_data[len(data)/2]
b = sorted_data[len(data)/2-1]
median_val = (a+b)/2
else:
median_val = sorted_data[(len(data)-1)/2]
print(median_val) # median val
```

Source (Stackoverflow)

Comments