2017-08-26 1 views
0

ich ein System, das zufällige Gruppen von 4 macht, dann bewertet sie:Insgesamt Summe Bewertung mit bestem Ergebnis

import numpy 
import math 
import random 
for i in range(1): 
    # everything is in, see the indentation 
    members=4 
    n_groups =4 
    participants=list(range(1,members+1))*n_groups 
    #print participants 
    random.shuffle(participants) 

    with open('myfile1.txt','w') as tf: 
     for i in range(n_groups): 
      group = participants[i*members:(i+1)*members] 
      for participant in group: 
       tf.write(str(participant)+' ') 
      tf.write('\n') 

    with open('myfile1.txt','r') as tf: 
     g = [list(map(int, line.split())) for line in tf.readlines()] 
     print(g) 




    my_groups =g 

    def get_rating(group): 
     return len(set(group)) 

    for each_grp in my_groups: 
     print((get_rating(each_grp))) 

Dadurch wird die Ausgabe gibt:

[[1, 3, 2, 1], [4, 4, 3, 3], [2, 2, 1, 3], [1, 4, 4, 2]] 
3 
2 
3 
3 

Gibt es eine Weise, die ich zusammenfassen kann die 4 Bewertungen, um eine Gesamtpunktzahl zu erhalten? Wie in diesem Fall (3 + 2 + 3 + 3) = 11, auch wenn ich Folgendes ändere: für i im Bereich (1): Was die Anzahl der Schleifen so ändert: für i in Bereich (5): Würde der Code 5 Mal mit unterschiedlichen Ergebnissen laufen, gibt es einen Code, um die beste Gesamtpunktzahl von den 5 Studien zu finden?

Im Grunde gibt es etwas, das ich verwenden kann, um die 4 Bewertungen zusammenzufassen, und wenn es wiederholt wird, kann es die beste Gesamtpunktzahl aus allen Wiederholungen auswählen?

Antwort

1

eine laufende Gesamt halten:

total = 0 
for each_grp in my_groups: 
    c = get_rating(each_grp) 
    total += c 
    print(c) 

Sie das Original list nehmen und einen Generator sum bis die len des set verwenden:

>>> sum(get_rating(each_grp) for each_group in my_groups) 
11 
+0

Das funktioniert wirklich gut! Gibt es irgendeine Möglichkeit, wenn ich mehr Wiederholungen mache, kann es die Summe der Bewertungen finden, die am niedrigsten ist? – Xenon