Die Berechnung der durchschnittlichen von Nummern .txt-Datei mit Python
def main():
total = 0.0
length = 0.0
average = 0.0
try:
#Get the name of a file
filename = input('Enter a file name: ')
#Open the file
infile = open(filename, 'r')
#Read the file's contents
contents = infile.read()
#Display the file's contents
print(contents)
#Read values from file and compute average
for line in infile:
amount = float(line)
total += amount
length = length + 1
average = total / length
#Close the file
infile.close()
#Print the amount of numbers in file and average
print('There were ', length, ' numbers in the file.' )
print(format(average, ',.2f'))
except IOError:
print('An error occurred trying to read the file.')
except ValueError:
print('Non-numeric data found in the file')
except:
print('An error has occurred')
main()
Dies ist, wie die zahlen in meinem .txt-Datei angezeigt:
78
65
99
88
100
96
76
Dass ich immer "Ein Fehler ist aufgetreten", wenn ich versuche zu laufen. Nachdem ich den Kommentar heraus, dass ich eine Teilbarkeit Fehler. Ich habe versucht, nur ausdrucken, die Summe und die Länge zu sehen, wenn Sie waren eigentlich computing, sondern jeder ist 0,0 also anscheinend habe ich einige Probleme darin, Sie zu akkumulieren richtig.
- Wenn Sie möchten, um herauszufinden, was schief gelaufen ist, versuchen Sie zunächst nicht die exception zu fangen, so dass Sie sehen können, wird die traceback.
Du musst angemeldet sein, um einen Kommentar abzugeben.
infile.read()
verbraucht die Datei. Prüfen, schreiben jede Zeile, wie Sie über ihn kommen, statt.infile.read()
dauern wird, die gesamte Datei, keine einzelnen Teile. Wenn Sie möchten, dass einzelne Teile, die Sie haben zu trennen (durch Leerzeichen) und loszuwerden, die whitespace-Zeichen (das ist\n
).Obligatorischen one-liner:
Würden Sie dann wünschen zum iterieren über den Inhalt
contents
, als wäre das das einzige, was Wert iteriert.infile
bereits erschöpft ist, und nachfolgende Aufrufe vonread()
erzeugt einen leeren string.Ich veränderte Sie code, um zu sehen, ob ich es Arbeit bilden könnte und sehen immer noch so viel wie Euch möglich ist. Dies ist, was ich kam mit: