Python Script Calculating Average


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Python Script Calculating Average
# 15  
Old 10-28-2014
It is possible. In fact, I think it would be a good exercise for learning.
I would suggest a dictionary where the key is the team and the value is an array of players.
# 16  
Old 10-30-2014
Quote:
Originally Posted by Aia
It is possible. In fact, I think it would be a good exercise for learning.
I would suggest a dictionary where the key is the team and the value is an array of players.
I am trying to do that but I am having a little trouble. Here is how I started it:

Code:
team = {}
team['1']= ?
team['2']= ?
team['3']= ?
team['4']= ?
team['5']= ?
while True: 
  options=team.keys()
  options.sort()
    for entry in options: 
      print entry, team[entry]

    selection=raw_input("Please Select:") 
    if selection =='1': 
      print ???? 
    elif selection == '2': 
      print ????
    elif selection == '3':
      print ???? 
    elif selection == '4': 
      print ????
	elif selection == '5':
    else: 
      print "Unknown option selected, please try again."

For the dictionary of teams do I put in the team names? Or since I am reading from a file do I set it in some way?
# 17  
Old 10-30-2014
A few steps that might get you going.

Let's create an empty dictionary teams
Code:
teams = {}

Let's assume you read from a file
Code:
line = "Howard,Ryan,Phillies,1b,529,142,26,0,47,136,.268"

This is extracting lastname, firstname and team from line
Code:
lname, fname, team  = line.split(',')[:3]

If there's no value yet assigned to the team the array must be created first, here I am creating it empty, but it can be done assigning a first player, after that you can just append new players
Code:
teams[team] = []

Appending a new player to the team
Code:
teams[team].append(" ".join([fname, lname]))

Now to access that team you only have to issue
Code:
print(", ".join(teams["Phillies"]))

You might want to validate what the user input
Code:
if selection in teams:
	print(", ".join(teams[selection]))

Remove the first set of () around print if you are using python 2.x
# 18  
Old 10-30-2014
If there are multiple lines in the file with different teams and players, then how would you set each line to a line to extract from?
To make things easier, let's say each line you read from is formatted in the same name with lname, fname, team, and statistics.
# 19  
Old 10-30-2014
You could refer back to your post #1 and see how a file could be read line by line.

Here's a more Pythonic and succinct way

Code:
with open("file") as f:
    for line in f:
        lname, fname, team  = line.split(',')[:3]
        <continue placing it into a dict, etc...>

# 20  
Old 10-30-2014
Okay, I am trying to put everything together, and I am a little lost.

Code:
#!/usr/bin/python

f = open("test", "r")
lines = f.readlines()
f.close()

for l in sorted(lines, key=lambda x: x.split(',')[2]):
    print l,


team = {}
with open("test") as f:
    for line in f:
        lname, fname, team  = line.split(',')[:3]
   while True:
  options=team.keys()
  options.sort()
    for entry in options:
      print entry, team[entry]

     selection=(raw_input("Please Select: "), 'r')
    if selection =='0':
      print(", ".join(teams[selection]))
    elif selection == '1':
      print(", ".join(teams[selection]))
    elif selection == '2':
      print(", ".join(teams[selection]))
    elif selection == '3':
      print(", ".join(teams[selection]))
#   elif selection == '4':)
    else:
      print "Unknown option selected, please try again."


Last edited by totoro125; 10-30-2014 at 11:16 PM..
# 21  
Old 10-31-2014
Let's do this: if you have another question, comment every line of this snippet with what you think is doing first.

Code:
#!/usr/bin/python

# This is an example intended as a guide only and not as a complete solution

teams = {}
with open("test") as f:
    for line in f:
        lname, fname, team = line.rstrip('\n').split(',')[:3]
        if team in teams:
            teams[team].append(" ".join([fname, lname]))
        else:
            teams[team] = [" ".join([fname, lname])]

team_names = "\n".join(sorted(teams))
while True:

    print "=" * len("team names")
    print "Team Names"
    print "=" * len("team names")
    print team_names

    selection = raw_input("Select a team from above list or press q: ")

    if selection == 'q':
        break

    if selection in teams:
        print "Team " + selection + " has the following players:"
        print ", ".join(teams[selection])
    else:
        print "Team " + selection + " not found"

This User Gave Thanks to Aia For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Calculating average from files

I have some files with the following contents.I would like to calculate average of fifth column. How can I do this with awk? file1 cat 95.9 152 78.0 17.9 rat 67.1 153 36.5 30.6 dog 81.4 154 68.1 13.3 dog 92.0 155 55.5 36.5 rat 73.8 156 23.9 49.9 file2 rat... (4 Replies)
Discussion started by: avina
4 Replies

2. UNIX for Dummies Questions & Answers

Calculating average

Hi I have file like below 111,victor,48,12,36 342,Peter,54,58,30 476,Scott,25,36,48 567,Patty,74,17,95 I have written below code to calcualte avereage for every id Victor = 48+12+36/3 #!/bin/ksh /usr/xpg4/bin/awk ' BEGIN {FS=","} {sum=0; n=0;i=3 (1 Reply)
Discussion started by: stew
1 Replies

3. Shell Programming and Scripting

Calculating the average of scores

Hi I have 2 files file1 aac 23 25 aac 87 90 aac 33 67 file2 23 0.9 24 0.8 25 0.4 ........ 67 0.55 ........ I want to get output as (11 Replies)
Discussion started by: anurupa777
11 Replies

4. Shell Programming and Scripting

Calculating average with awk

I need to find the average from a file like: data => BW:123 M:30 RTD:0 1 0 1 0 0 1 1 1 1 0 0 1 1 0' data => BW:123 N:30 RTD:0 1 0 1 0 0 1 1 1 1 0 0 1 1 0' data => BW:123 N:30 RTD:0 1 0 1 0 0 1 1 1 1 0 0 1 1 0' data => BW:123 N:30 RTD:0 1 0 1 0 0 1 1 1 1 0 0 1 1 0' data => BW:123 N:30 RTD:0 1... (4 Replies)
Discussion started by: Slagle
4 Replies

5. Shell Programming and Scripting

Calculating average for every Nth line in the Nth column

Is there an awk script that can easily perform the following operation? I have a data file that is in the format of 1944-12,5.6 1945-01,9.8 1945-02,6.7 1945-03,9.3 1945-04,5.9 1945-05,0.7 1945-06,0.0 1945-07,0.0 1945-08,0.0 1945-09,0.0 1945-10,0.2 1945-11,10.5 1945-12,22.3... (3 Replies)
Discussion started by: ncwxpanther
3 Replies

6. Shell Programming and Scripting

Calculating average of 100 different files of same size

Hey guys..... I have many files (lets say 100 or more) of same size, and I want to create a new output file and calculate the average of first row fifth column in all files and print it in first row of output file, then 2nd row fifth col in all 100 files and print it in 2nd row of output... (1 Reply)
Discussion started by: CAch
1 Replies

7. UNIX for Dummies Questions & Answers

Calculating weighted average

Dear all, i have 200 values in a file. How can i calculate a weighted average and output into a new file avg.dat? INPUT: file1.dat 1.3453 2.434 2.345 ..... OUTPUT: avg.dat file1: 1.762 Thanks. Po (3 Replies)
Discussion started by: chen.xiao.po
3 Replies

8. UNIX for Dummies Questions & Answers

Calculating average

Hi, i have 12 float variables in a bash file and i want to calculate the average of them. Can any body help? (6 Replies)
Discussion started by: limadario
6 Replies

9. UNIX for Dummies Questions & Answers

Calculating the Number of Rows and Average

Hi All I like to know how can we calculate the number of rows and the average of the values present in the file. I will not know what will be the rowcount, which will be dynamic in nature of the file. eg. 29 33 48 30 28 (6 Replies)
Discussion started by: pk_eee
6 Replies

10. Shell Programming and Scripting

Calculating the average

This is the cronjob ---------------------- root@a7germ:/home/paxtemp > crontab -l|grep test 57 * * * * /home/paxtemp/test_1.sh 0,5,10,15,20,25,30,35,40,45,50,55 * * * * /home/paxtemp/test.sh root@a7germ:/home/paxtemp > This is the contents of test.sh script... (2 Replies)
Discussion started by: kekanap
2 Replies
Login or Register to Ask a Question