编写一个python程序,可以存储学生的姓名和考试成绩。该程序应该能够:
- 计算学生的平均成绩,并在输入完学生姓名和成绩后打印平均成绩
- 总结谁的得分最高和最低
我陷入了如何找到平均值、最高值和最低值的困境,这是我的代码:
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())