Python Programming
 
Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
User Name:
Password:
Remember me

The Shed is going Social! Join us on FaceBook and Twitter and chime in on the conversation.

Go Back   Dev Shed ForumsProgramming LanguagesPython Programming

Reply
Add This Thread To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 
Thread Tools Search this Thread Rate Thread Display Modes
 
Unread Dev Shed Forums Sponsor:
  #1  
Old November 29th, 2012, 01:46 PM
blobman23 blobman23 is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Nov 2012
Posts: 16 blobman23 User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: 2 h 41 m 15 sec
Reputation Power: 0
Help!

Here is the assignment:

For this assignment, you must implement a course grading program. Your program should read from an input file called "grades.txt" of the following format:
2
John Doe
82
100
57
0
Jane Smith
91
12
45
81
0
The first number represents the total number of students included in the file. The number of grades for each student is unknown. The zero signifies the end of a student's grades. Your program should calculate the average of each student’s grades and output the following to the screen (with the grades now sorted, ascending):
John Doe 57, 82, 100 -- B
Jane Smith 12, 45, 81, 91 -- A
Your program should write to an output file called “summary.txt” a summary like the following:
Number of students: 12
Average grade: 72.5
Highest grade: 97
Lowest grade: 34
Student with longest name: Jane Smith
You must create a class called Student that represents a student's information. This class must contain attributes for the first name, last name, and list of grades. It must override the __str__ method that prints the student information as it should be displayed to the screen (see above). It must also provide a method called get_average that returns the average grade for the student, as well as a method called get_letter that returns the letter grade representation of the student's average.


This is what I have:

Code:
class Student(object):
    def __init__(self, name=""):
        self.name = name
        self.grades = []
    def get_average(self):
        return sum(self.grades) / float(len(self.grades))
    def get_letter(self):
        if get_average >= 89.5:
            return 'A'
        elif 79.5 <= get_everage <= 89.4:
            return 'B'
        elif 69.5 <= get_everage <= 79.4:
            return 'C'
        elif 59.5 <= get_everage <= 69.4:
            return 'D'
        elif get_average <= 59.4:
            return 'F'
    def __str__(self):
        return "%s %0.2f %s" % (self.name, self.get_average(), self.get_letter())

Reply With Quote
  #2  
Old November 29th, 2012, 01:55 PM
blobman23 blobman23 is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Nov 2012
Posts: 16 blobman23 User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: 2 h 41 m 15 sec
Reputation Power: 0
update:

This is now what I have:

Code:
def class_student(object):
	def init(self,name,grades):
		self.name=name
def str(self):
	string=self.name
	for i in range(len(list)):
		string+=str(grades[i])
	string+="__"+ getLetter()
	return string
def get_average(self):
	for i in range(len(list)):
		avg+=int(list[i])
		avg1=len(list)
	return avg
def get_letter(self,avg):
	if avg >89:
		return"A"
	elif avg == 89 and avg >79:
		return"B"
	if avg <79 and avg>69:
		return"C"
	elif avg <=69 and avg>59:
		return"D"
	else:
		return"F"
infile =open("grades.txt", "r")
gradeslist = infile.readlines()
students=gradeslist[0]
i=1 
stuList=[]
for i in range(len(gradeslist)):
	students=students(gradeslist[i])
	grade=-1
	while true:
		i+=1
		grades =gradeslist[i]
	if grades == 0:
		break
else:
	students.addGrade(gradeslist[i])

student.sort(Grades())
stuList.append(student)
for i in range(studList):
print str(stuList[i])
outfile=open("Summary.txt", "W")
outfile.write("number fo Students:"+numstudents+"\n")

Reply With Quote
  #3  
Old November 29th, 2012, 03:30 PM
b49P23TIvg's Avatar
b49P23TIvg b49P23TIvg is offline
Contributing User
Dev Shed Loyal (3000 - 3499 posts)
 
Join Date: Aug 2011
Posts: 3,354 b49P23TIvg User rank is Major (30000 - 40000 Reputation Level)b49P23TIvg User rank is Major (30000 - 40000 Reputation Level)b49P23TIvg User rank is Major (30000 - 40000 Reputation Level)b49P23TIvg User rank is Major (30000 - 40000 Reputation Level)b49P23TIvg User rank is Major (30000 - 40000 Reputation Level)b49P23TIvg User rank is Major (30000 - 40000 Reputation Level)b49P23TIvg User rank is Major (30000 - 40000 Reputation Level)b49P23TIvg User rank is Major (30000 - 40000 Reputation Level)b49P23TIvg User rank is Major (30000 - 40000 Reputation Level)b49P23TIvg User rank is Major (30000 - 40000 Reputation Level) 
Time spent in forums: 1 Month 2 Weeks 3 Days 8 h 21 m 53 sec
Reputation Power: 383
retrograde programming

blobman23! What's the deal? You retrogress. What happened to your class?

Check out this version of get_letter!

Code:
def get_letter(avg):
    return 'ABCDF'[sum(avg <= cutoff for cutoff in range(60,100,10))]
__________________
[code]Code tags[/code] are essential for python code!

Reply With Quote
  #4  
Old November 29th, 2012, 04:02 PM
b49P23TIvg's Avatar
b49P23TIvg b49P23TIvg is offline
Contributing User
Dev Shed Loyal (3000 - 3499 posts)
 
Join Date: Aug 2011
Posts: 3,354 b49P23TIvg User rank is Major (30000 - 40000 Reputation Level)b49P23TIvg User rank is Major (30000 - 40000 Reputation Level)b49P23TIvg User rank is Major (30000 - 40000 Reputation Level)b49P23TIvg User rank is Major (30000 - 40000 Reputation Level)b49P23TIvg User rank is Major (30000 - 40000 Reputation Level)b49P23TIvg User rank is Major (30000 - 40000 Reputation Level)b49P23TIvg User rank is Major (30000 - 40000 Reputation Level)b49P23TIvg User rank is Major (30000 - 40000 Reputation Level)b49P23TIvg User rank is Major (30000 - 40000 Reputation Level)b49P23TIvg User rank is Major (30000 - 40000 Reputation Level) 
Time spent in forums: 1 Month 2 Weeks 3 Days 8 h 21 m 53 sec
Reputation Power: 383
Code:
class Student:

    def __init__(self,first_name,last_name,grades):
        self.first_name = first_name
        self.last_name = last_name
        grades.sort()
        self.grades = grades

    def __str__(self):
        return '%s %s %s -- %s'%(
            self.first_name,self.last_name,
            str(self.grades)[1:-1],
            self.get_letter())

    def get_average(self):
        a = self.grades
        return sum(a)/float(len(a))

    def get_letter(self):
        a = self.get_average()
        return 'ABCDF'[sum(a <= cutoff for cutoff in range(60,100,10))]

Reply With Quote
  #5  
Old November 29th, 2012, 07:53 PM
dwblas dwblas is offline
Contributing User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: May 2009
Posts: 291 dwblas User rank is Corporal (100 - 500 Reputation Level)dwblas User rank is Corporal (100 - 500 Reputation Level)dwblas User rank is Corporal (100 - 500 Reputation Level)dwblas User rank is Corporal (100 - 500 Reputation Level) 
Time spent in forums: 3 Days 18 h 25 m 16 sec
Reputation Power: 7
I'm not sure if you got how to split the records on each student. It is pretty standard stuff when dealing with files. This creates a list of lists, with a sub-list for each student.
Code:
test_data="""2
John Doe
82
100
57
0
Jane Smith
91
12
45
81
0
Buggs Bunny
92
13
46
82
0"""

readlines_test=test_data.split("\n")
print readlines_test

list_o_students = []
junk_list = []
for ctr in range(1, len(readlines_test)):
    rec=readlines_test[ctr].strip()
    if "0" == rec[0]:
        if len(junk_list):
            list_o_students.append(junk_list)
        junk_list = []
    else:
        junk_list.append(rec)

if len(junk_list):     ## append final group if no zero
    list_o_students.append(junk_list)

print "-"*50
for each_list in list_o_students:
    print each_list 

Reply With Quote
Reply

Viewing: Dev Shed ForumsProgramming LanguagesPython Programming > Help!

Developer Shed Advertisers and Affiliates



Thread Tools  Search this Thread 
Search this Thread:

Advanced Search
Display Modes  Rate This Thread 
Rate This Thread:


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
View Your Warnings | New Posts | Latest News | Latest Threads | Shoutbox
Forum Jump

Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
  
 


Powered by: vBulletin Version 3.0.5
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.

© 2003-2013 by Developer Shed. All rights reserved. DS Cluster - Follow our Sitemap