Python3 - какие переменные вызывать - PullRequest
0 голосов
/ 28 сентября 2018

, прежде чем критиковать меня, я знаю, что я программист, и, вероятно, никогда не найду работу или не буду хорошим.Но мне нужна помощь.Твоя помощь.Я не знаю, какие переменные нужно вызывать в моих функциях, чтобы они выводили мои средние оценки и оценки.Ниже приведен мой код, не могли бы вы взглянуть, спасибо.

def assigngrades(scores):
 avg = sum(scores)/len(scores)
 print(avg)


 for val in scores:
  if val > avg + 10:
   grade = 'A'
  elif val > avg + 5:
   grade = 'B'
  elif val > avg -5:
    grade = 'C'
  elif val > avg - 10:
   grade = 'D'
  else:
   grade = 'F'
  grades.append(grade)
 print("in assigngrades, grades: ",grades)
 return grades



def printsummary(grades):
 print('ID        Score        Average        Grade')
 print('===========================================')
 print( )


 for val in range(len(ids)):
  print('val', val)
  print(ids,' ',scores, ' ', grades)
 return

#main
ids = []
scores = []
grades = []
STOP = 0


id = int(input("Enter an ID:"))
while id > STOP:
 ids.append(id)
 score = eval(input("Enter a score:"))
 scores.append(score)
 id = (input("Enter an ID number, 0 to STOP:"))

 grades = assigngrades(scores)
 print("after while loop")
 print("Ids:", ids, "Scores:", scores, "Grades:", grades)
 printsummary(grades)

Спасибо за вашу помощь, и я очень ценю ваше время.

1 Ответ

0 голосов
/ 28 сентября 2018

Вы должны заставить assigngrades возвращать оба класса и среднее значение в виде кортежа, а printsummary взять среднее значение для вывода:

def assigngrades(scores):
    avg = sum(scores) / len(scores)
    for val in scores:
        if val > avg + 10:
            grade = 'A'
        elif val > avg + 5:
            grade = 'B'
        elif val > avg - 5:
            grade = 'C'
        elif val > avg - 10:
            grade = 'D'
        else:
            grade = 'F'
        grades.append(grade)
    return grades, avg

def printsummary(ids, scores, grades, avg):
    print('%7s%7s%7s' % ('ID', 'Score', 'Grade'))
    print('=' * 21)
    for id, score, grade in zip(ids, scores, grades):
        print('%7s%7s%7s' % (id, score, grade))
    print('Average: %f' % avg)

ids = []
scores = []
grades = []
STOP = 0

while True:
    id = int(input("Enter an ID:"))
    if id <= STOP:
        break
    ids.append(id)
    score = int(input("Enter a score:"))
    scores.append(score)
grades, avg = assigngrades(scores)
printsummary(ids, scores, grades, avg)

Пример ввода и вывода:

Enter an ID:12
Enter a score:84
Enter an ID:13
Enter a score:95
Enter an ID:19
Enter a score:74
Enter an ID:0
     ID  Score  Grade
=====================
     12     84      C
     13     95      A
     19     74      F
Average: 84.333333
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...