如何获得输入值的平均值、最高值和最低值



编写一个python程序,可以存储学生的姓名和考试成绩。该程序应该能够:

  1. 计算学生的平均成绩,并在输入完学生姓名和成绩后打印平均成绩
  2. 总结谁的得分最高和最低

我陷入了如何找到平均值、最高值和最低值的困境,这是我的代码:

students = {}
polling_active = True
while polling_active:
name = input("enter your name: ")
score = int(input("enter your score: "))

students[name] = score

repeat = input("would you like to add another student?" "(yes/no)")
if repeat == 'no':
polling_active = False

print ("-------RESULT-------")
for name, score in students.items():
print(name, "your score is: ", score )

total_sum = float(sum(score)) 
print (total_sum)

用以下代码继续您的代码,以获得平均值和最大最小值:

total_sum = sum(list(students.values()))/len(students)
highest=max(students, key=lambda x:students[x])
lowest=min(students, key=lambda x:students[x])
print('Average: ', total_sum)
print('Highest score: ', highest, '   ',students[highest])
print('Lowest score: ', lowest, '   ',students[lowest])
students = {}
def Average(lst): 
return sum(lst) / len(lst)
while True:
name = input("enter your name: ")
score = int(input("enter your score: "))
students[name] = score
repeat = input("would you like to add another student?" "(yes/no)")
if repeat == 'no':
break

print ("-------RESULT-------")
for name, score in students.items():
print(name, "your score is: ", score )


avg = Average(students.values())
highest = max(students,key=students.get)
lowest = min(students,key=students.get)
print ('avg :',avg)
print ('highest :',highest)
print ('lowest :',lowest)

这个问题有很多可能的解决方案。我将详细描述。

import sys
students = {}
polling_active = True
while polling_active:
name = input("enter your name: ")
score = int(input("enter your score: "))

students[name] = score

repeat = input("would you like to add another student?" "(yes/no)")
if repeat == 'no':
polling_active = False

print ("-------RESULT-------")
#We will use totalScore for keeping all students score summation.
#Initaly total score is 0.
totalScore = 0
#For getting lowest score student name, we need lowest score first. 
#Initaly we don't know the lowest score. So we are assuming lowest score is maximum Int value
lowestScore = sys.maxsize 
#We also need to store student name. We can use lowestScoreStudentName variable for storing student name with lowest score
#Initaly we don't know the student name. So we initialize it as an empty student list.
lowestScoreStudentName = []
#For getting maximum score student name, we need maximum score first. 
#Initaly we don't know the maximum score. So we are assuming lowest score is minimum Int value
maximumScore = -sys.maxsize - 1
#We also need to store student name. We can use maximumScoreStudentName variable for storing student name with maximum score
#Initaly we don't know the student name. So we initialize it as an empty student list.
maximumScoreStudentName = []
for name, score in students.items():
totalScore = totalScore + score
print(name, "your score is: ", score )
if lowestScore > score:
lowestScore = score
#Making student list empty, since score is lower than before
lowestScoreStudentName = []
lowestScoreStudentName.append(name)
elif lowestScore == score:
#keeping all students in the list who gets lowest score
lowestScoreStudentName.append(name)

if maximumScore < score:
maximumScore = score
#Making student list empty, since score is higher than before
maximumScoreStudentName = []
maximumScoreStudentName.append(name)
elif maximumScore == score:
#keeping all students in the list who gets highest score
maximumScoreStudentName.append(name)

total_sum = sum(list(students.values()))
average_sum = totalScore/len(students) 
print("Average score : " + str(average_sum))
print("Lowest Score holder students name: " + str(lowestScoreStudentName))
print("Highest score holder students name: " + str(maximumScoreStudentName))

我想这可能对有帮助

student = []
student_1=[]
score = []
copy = [] 
loop = True
yes = ["YES","yes","y","Y"]
while loop:
Name = input("Name : ")
Score = int(input("Score : "))
student.append(Name)
score.append(Score)
copy.append(Score)
Enter_more = input("Write YES or Y or y or yes to add more names: ")
if Enter_more in yes:
continue
else:
break
score.sort()
score.reverse()
sum = 0
for i in range(len(score)):
index = score[i]
student_1.append(student[copy.index(index)])
sum+=score[i]
score[i] = student[i]
print("Average Score is "+str(float(sum/len(score))))
print("Highest Score is Scored by  "+str(student_1[0]))
print("Lowest Score is Scored by "+str(student_1[len(student_1)-1]))

您可以直接将while循环设置为True,以避免生成另一个变量的麻烦:

while True:

并用打破它

name=input("Enter your name: ")
if name=='no':
break

为了找到你的平均水平,你可以做

average=(sum(students.values()))/len(students)

最后,对于最高和最低,你可以像一样使用内置的最大和最小函数

highest=max(students.values())
lowest=min(students.values())

最新更新