On 30/08/14 17:14, Richard Dillon wrote:
The total I get doesn't match the values entered in the file.
def main():
total = 0
infile = open('/Users/richarddillon/Desktop/numbers.txt', 'r')
# read first record
line = infile.readline()
a = float(line)
Here you get the number a
# read rest of records
while line != '':
total = total + a
And here you add a (calculated above) to total.
line = infile.readline()
And here you end the loop so you effectively add a to
total for as many lines as are in the file.
You effectively calculate
a * (len of file-1)
You need to convert line to float and add that to total
inside the loop.
BUT, there is a much better way using Pythons for loop:
total = 0
for line in infile:
total += float(line)
That automatically reads all the lines ion the file so
you don't need to check for empty lines, set up the
first line etc.
infile.close()
And if you use Pythons 'with' structure you don't
need the close either, so your whole becomes
total = 0
with open('/Users/richarddillon/Desktop/numbers.txt', 'r') as infile:
for line in infile:
total += float(line)
print(total)
Which is shorter, safer, and more readable.
HTH
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor