Функция для записи имен студентов - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь написать программу на Python, которая принимает имя и оценку учащегося. Мне нужна эта функция, чтобы работать с несколькими учениками, а затем отслеживать вводимые данные, чтобы я мог определить, какой ученик получил наивысшую оценку. В настоящее время я пытаюсь заставить l oop снова запускаться после первых входов, а также я не знаю, как записать данные. Это моя попытка:

def banter(name= "", score = 0):
   student_no = int(input("How many student are there> "))
   while student_no > 0:
     name = input("Enter your name here > ")
     grade = int(input("Enter your grade here > "))
     student_no  = student_no - 1
     return name + str(grade)
banter()

Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

0 голосов
/ 07 февраля 2020

Вот действительно хороший класс для этого. Скопируйте следующий код, он работает очень хорошо. По сути, я сделал так, чтобы ученик был объектом, и у каждого ученика есть присвоенная им оценка и имя. Поэтому, когда вы делаете «Студент» (имя, класс), он создает его и имеет специальный вывод для каждого студента. Затем я просто помещаю их в список и в конце распечатываю список.

class Student:
    def __init__(self, name, grade):
        self.name = name
        self.grade = grade

    def __str__(self):
        return "{} has a grade of {}".format(self.name, self.grade)



students_list = []

x = int(input("How many students are there? "))

while x != 0:
    name = input("Enter the name: ")
    grade = input("Enter the grade: ")
    students_list.append(Student(name, grade))
    x-=1

for i in students_list:
    print(i)
0 голосов
/ 07 февраля 2020

Проблема с вашим кодом в последней строке вашей функции return name + str(grade)

Вы возвращаете значение и таким образом выходите из своего l oop. Возможно, вы захотите сохранить значения в list или dict

, например,

def banter(name= "", score = 0):
   student_no = int(input("How many student are there> "))
   student_data = {}
   while student_no > 0:
     name = input("Enter your name here > ")
     grade = int(input("Enter your grade here > "))
     student_data[name] = grade
     student_no  = student_no - 1
   return student_data

banter()

. Здесь сохраняются имя и оценка в словаре

0 голосов
/ 07 февраля 2020

return ломает l oop, вы можете попробовать это, создать list и append данные и вернуть list после l oop.

def banter(name= "", score = 0):
   student_no = int(input("How many student are there> "))
   name_grade = list()
   while student_no > 0:
     name = input("Enter your name here > ")
     grade = int(input("Enter your grade here > "))
     student_no  = student_no - 1
     name_grade.append(name+str(grade))
   return name_grade

banter()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...