2015-04-03 26 views
0

我的教授让我做一个二维程序来计算一个学生的平均水平。现在他说他希望我把我的努力工作变成一个一维程序,我不知道该怎么做,有什么帮助?如何将二维程序转化为一维?

import sys 
    students = [] 
    grades = [] 

    while True: 
     student = input ("Enter a name: ").replace(" ","") 
     if student.isalpha() == True and student != "0": 
      while True: 
       grade = input("Enter a grade: ").replace(" ","") 
       if grade == "0" or grade == 0: 
        print ("\n") 
        print ("A zero is entered.") 
        sys.exit(0) 
       if grade.isdigit()== True: 
        grade = int(grade) 
        if grade >= 1 and grade <= 10: 
         if student in students: 
          index = students.index(student) 
          grades[index].append(grade) 
          break 
         else: 
          students.append(student) 
          grades.append([grade]) 
          break 
        else: 
         print("Invalid grade.") 
     elif student == "0": 
      print("A zero is entered.") 
      break 
     else: 
      print ("Invalid name.") 
    for i in range(0,len(students)): 
     print("NAME: ", students[i]) 
     print("GRADE: ", grades[i]) 
     print("AVERAGE: ", round(sum(grades[i])/len(grades[i]),1), "\n") 

例如,现在它打印出:

NAME: Jack 
GRADE: [8, 7, 9] 
AVERAGE: 8.0 

但我需要它来打印出这样的:

NAME: Jack 
GRADE: 8, 7, 9 
AVERAGE: 8.0 
+0

他解释了什么“二维程序”的含义?我从来没有见过它使用过,也不知道它的含义。 – KSFT 2015-04-03 01:47:41

+0

@KSFT据我所知,他希望程序打印出简单的数字,例如'8,9,7',因为现在它会打印出[[8] [9] [7]'并使用一个函数来删除[]并不是一种显而易见的方式。 – Acu 2015-04-03 01:50:04

+0

我的猜测是,2个数组''学生,成绩''可以变成1个包含''name,grade''条目的记录数组(或者它被称为python)。 – BitTickler 2015-04-03 01:51:00

回答

1

我认为,随着grades.append(grade)更换grades.append([grade])将有助于。

好的,我想我现在更好地理解你的问题了。试试像这样打印:

print("GRADE: ", ", ".join(grades[i])) 
+0

如果我这样做,那么我不能输入3个或更多的成绩。只有两个。 – Acu 2015-04-03 01:59:42

相关问题