2016-03-19 20 views
-3

Wie berechnet man den Durchschnitt mehrerer Listen von ganzen Zahlen?Wie berechnet man den Durchschnitt mehrerer Listen von ganzen Zahlen?

Ich habe ein Problem, dieses Programm zu versuchen, den Durchschnitt für die Daten in der Textdatei zu berechnen.

Also das ist mein Code:

import string 
from operator import itemgetter 
Options=("alphabetical order","highest to lowest","average score") 
Option=raw_input("Which order do you want to output?" + str(Options)) 
choices=("Class 1","Class 2", "Class 3") 
file = open("Class1.txt","r") 
#Highest to Lowest 
lines = file.readlines() 
loopcount = len(lines) 
for i in range(0,loopcount): 
    poszerostring = lines.pop(0) 
    new = str(poszerostring) 
    new1 = string.strip(new,'\n') 
    tempArray = new1.split(',') 
    resultsArray = [tempArray.append(poszerostring)] 
    name = tempArray.pop() 
    resultsArray.append(int(tempArray.pop())) 
    resultsArray.append(int(tempArray.pop())) 
    resultsArray.append(int(tempArray.pop())) 
    resultsArray.remove(None) 
    printedArray = resultsArray 
    print printedArray 
if Option == "average score": 
     average = 0 
     sum = 0  
     for n in printedArray: 
      sum = sum(str(printedArray)) 
     average = sum/3 
     print average 

Hier die Daten, die in der Textdatei ist:

Bob, 8,5,7

Dylan, 5 , 8,2

Buchse, 1,4,7

Jay, 3,8,9

+0

@gollumbo, warum haben Sie den ganzen Code mit Ihrer Bearbeitung entfernt? –

+0

Ist dieser Teil der GCSE? –

+1

Dieses Hin und Her Löschen und Zurückrollen des Inhalts dieser Frage ist lächerlich. Sie schreiben ein Problem, das von der Öffentlichkeit angeschaut werden muss, erhalten eine anständige Antwort und versuchen anschließend, Ihre Spuren zu löschen? Abgesehen von der Geringschätzung jeder Person, die Ihnen helfen und sich dafür einsetzen möchte, haben sich sowohl die Frage als auch @ Peters Antwort bereits in [Google Cache] (http://webcache.googleusercontent.com/search?q= Cache: Cp79m7vYBlwJ: stackoverflow.com/questions/36100687/how-to-cal-the-average-of-multiple-lists-of-integers+&cd=1&hl=de&ct=clnk&gl=de). – altocumulus

Antwort

2

Sie erfinden das Rad für den größten Teil Ihres Codes neu. Ich würde das csv Paket verwenden, um die Datei zu lesen, die den Codeweg sauberer macht. Documentation here.

import csv 

with open('Class1.txt') as csv_file: 
    csv_reader = csv.reader(csv_file, delimiter=',') 
    for row in csv_reader: 
     name = row[0] # first value on each row is a name 
     values = [int(value) for value in row[1:]] # make sure the other values are read as numbers (integers), not strings (text) 
     average = sum(values)/len(values) # note that in Python 2 this rounds down, use float(sum(values))/len(values) instead 
     print('{}: {}'.format(name, average)) 

Noch ein paar Hinweise:

  • nach tot PEP8 Variablen (wie Options sollte nie mit einem Großbuchstaben beginnen, Klassen sollten;
  • wenn Sie nur einmal eine Variable verwenden, Sie in der Regel muss nicht erstellt werden, wie loopcount könnte ersetzt werden durch `für i im Bereich (0, len (Linien));
  • eigentlich brauchen Sie keinen loopcounter i überhaupt, verwenden Sie einfach for line in lines:;
  • Die Zeile sum = sum(str(printedArray)) überschreibt die Funktion sum mit einem Wert, wodurch die Funktion sum im Skript nicht weiter verfügbar ist. Vermeiden Sie immer die Verwendung von Variablennamen, die den vorhandenen Funktionsnamen entsprechen.
  • sum(str()) funktioniert nicht wie erwartet, weil Sie versuchen, Strings, nicht Zahlen;
  • Sie sehen, ich habe with open(file_name) as file_handler: verwendet; Dadurch wird die Datei geöffnet und am Ende des Codeblocks automatisch geschlossen. Dadurch kann ich nicht vergessen, die Datei erneut zu schließen (was Sie immer tun sollten). mehr auf withhere.
+0

gute Antwort, könnte auch erklären, warum Sie mit, um die Datei zu öffnen –

Verwandte Themen