/ / STATYSTYKI PYTHONA PRZECIĘTNY I NAJWYŻSZY WYNIK - Python, statystyki, przypadek, średnia, najwyższa

STATYSTYKA PYTHON AVERAGE AND HIGHEST SCORE - python, statystyki, case, średnia, najwyższa

grade=[]
names=[]
highest=0


#taking number of calues

cases=int(input("Enter number of cases: "))
for case in range(1,cases+1):
print("case",case)

#taking number of students

number=int(input("Enter number of students: "))
for numbers in range (1,number+1):

#getting name and marks
name=str(input("Enter name of student: "))
names.append(name)
mark=float(input("Enter mark of student:"))
grade.append(mark)


print("Case",case,"result")

#printing the results!
average=float(sum(grade)/number)
print("Average is: %.2f "%(average))
print("Highest Score is: %.2f"%(max(grade)))
print("Student with highest score: ",names[grade.index(max(grade))])

output->Enter number of cases: 2
case 1
Enter number of students: 2
Enter name of student: josh
Enter mark of student:98
Enter name of student: sarah
Enter mark of student:87
Case 1 result
Average is: 92.50
Highest Score is: 98.00
Student with highest score:  josh
case 2
Enter number of students: 3
Enter name of student: shania
Enter mark of student:78
Enter name of student: arleen
Enter mark of student:89
Enter name of student: zoya
Enter mark of student:89
Case 2 result
Average is: 147.00
Highest Score is: 98.00
Student with highest score:  josh

MOJE śr. w 3 przypadkach jest zepsuty i nie pokazuje najwyższego !. Zastanawiałem się, jak mogę uzyskać najwyższą, jeśli są 2 takie same wystąpienia. Najwyższy będzie tylko pierwszym wystąpieniem.

Odpowiedzi:

2 dla odpowiedzi № 1

Problem polega na tym, że w drugiej iteracji poprzez case w pętli, patrzysz też na nazwiska ioceny z poprzedniej pętli, ponieważ nigdy nie opróżniłeś list. Musisz opróżnić listy na początku pętli. Utwórz puste listy u góry pętli:

for case in range(1,cases+1):
print("case",case)
grade=[]
names=[]
highest=0

Możesz (i powinieneś) to zrobić zamiast definiowania zmiennych u góry pliku.


Aby zobaczyć, co poszło nie tak (przed dodaniem mojej poprawki), wykonaj następujące czynności:

average=float(sum(grade)/number)
print(grade)
print(names)
print("Average is: %.2f "%(average))
print("Highest Score is: %.2f"%(max(grade)))
print("Student with highest score: ",names[grade.index(max(grade))])

Zobaczysz, że listy mają wartości z poprzedniej iteracji przez pętlę.


0 dla odpowiedzi nr 2

Zasadniczo problem polega na tym, że lista jest wypełniana na samym początku pętli, spróbuj wyczyścić listę przed iteracją pętli. W tym celu należy wykonać następujące czynności:

for case in range(1,cases+1):
print(`case`,case)
grade=[]
names=[]
highest=0

Druga iteracja przez case Pętla stanowi tutaj problem