#python #variable-assignment
#python #переменная-назначение
Вопрос:
Напишите программу на 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)
Комментарии:
1. Привет, простым языком, вы можете опубликовать свою проблему программирования здесь. не стоит задавать целое решение.
2. Пожалуйста, не ожидайте, что люди будут делать всю вашу работу за вас. Это не то, для чего предназначен stackexchange. Покажите нам, что вы пробовали и с какими проблемами сталкиваетесь. Там люди помогут.
3. о, извините за это, я забыл упомянуть о своей работе, я уже редактирую сообщение
Ответ №1:
Продолжите свой код следующим образом, чтобы получить среднее и максимальное-минимальное:
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])
Ответ №2:
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)
Ответ №3:
Существует много возможных решений этой проблемы. Я подробно опишу.
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))
Ответ №4:
Я думаю, это может быть полезно
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]))
Ответ №5:
Вы можете напрямую установить цикл while как True, чтобы не создавать другую переменную:
while True:
и разбейте его с
name=input("Enter your name: ")
if name=='no':
break
и чтобы найти свое среднее значение, вы могли бы сделать
average=(sum(students.values()))/len(students)
затем, наконец, для максимального и минимального значений вы можете использовать встроенные функции max и min как так
highest=max(students.values())
lowest=min(students.values())