[Tutor] (no subject)
JEAN MICHEL
jeanrmichel at gmail.com
Thu May 15 06:57:36 CEST 2014
thank you for the all advice I really appreciate it. I probably wasn't
wasn't too clear when i first sent my email asking for help, my apologies
so let me better explain what i'm doing. I'm trying to write a program that
reads 3 class data files such as period1.txt, period2.txt. Inside those
files are the first name, last name, and 3 test scores from 3 different
students.
The format of the data files looks like this
Meagan. Hesse. 99. 99. 99
My program is then suppose to take the average assign a grade and write
the results and also the students names in another txt folder
I've tried fixing some of the problems but it looks like it's still a work
in progress I'm not to sure whether i'm opening the data files right, can
you take a look at that part
def calcaverage(test1,test2,test3):
for count in range(test1,test2,test3):
curraverage=0
curraverage=((test1[count]+ test2[count]+ test3[count])/3)
currentaverage.append(curraverage)
if curraverage>= 90:
grade= "A"
lettergrades.append(grade)
elif curraverage >= 80 and curraverage < 90:
grade= "B"
lettergrades.append(grade)
elif curraverage >= 70 and curraverage < 80:
grade= "C"
lettergrades.append(grade)
elif curraverage < 70:
grade= "F"
lettergrades.append(grade)
name=[]
test1=[]
test2=[]
test3=[]
averagescore=[]
lettergrades=[]
with open ("period1.txt", 'r') as infile:
for line in infile:
values = line.split()
name.append(values[0] + ','+ values[1])
for line in infile:
values = line.split()
score1=float(values[2])
test1.append(score1)
for line in infile:
values = line.split()
score2=float(values[3])
test2.append(score2)
for line in inline:
values = line.split()
score3=float(values[4])
test3.append(score3)
averagescore=calcaverage(test1,test2,test3)
print(line)
On Wed, May 14, 2014 at 9:15 PM, Danny Yoo <dyoo at hashcollision.org> wrote:
> > if curraverage>= 90:
> > grade= "A"
> > lettergrades.append(grade)
> > else:
> > if curraverage >= 80 and curraverage < 90:
> > grade= "B"
> > lettergrades.append(grade)
> > else:
> > if curraverage >= 70 and curraverage < 80:
> > grade= "C"
> > lettergrades.append(grade)
> > else:
> > if curraverage < 70:
> > grade= "F"
> > lettergrades.append(grade)
>
>
> Just wanted to note that this style of cascading if statements is a
> little unusual here. Since you know that only one of the tests is
> going to be true, you can use a more parallel structure.
>
> That is, if you're doing something like:
>
> ##################
> if test1:
> ...
> else:
> if test2:
> ...
> else:
> if test3:
> ...
> else:
> ...
> ##################
>
> and if you know that test1, test2, and test3 don't overlap, you can
> express this as:
>
>
> ##################
> if test1:
> ...
> elif test2:
> ...
> elif test3:
> ...
> else:
> ...
> ##################
>
> and avoid the Tower of Pisa-style code.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20140514/3e7aa218/attachment-0001.html>
More information about the Tutor
mailing list