首页 > 解决方案 > Python3-调用什么变量

问题描述

在你批评我之前,我知道我是一个基本的程序员,可能永远不会找到工作或成为好人。但我需要帮助。你的帮助。我不知道在我的函数中调用什么变量来打印我的平均成绩和分数。下面提供的是我的代码,你介意看看吗,谢谢。

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)

感谢您的帮助,我非常感谢您的宝贵时间。

标签: python-3.xfunctionvariablesprinting

解决方案


您应该将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

推荐阅读