2015-03-22 3 views
0

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

COLS= int(input("number of students to enter: ")) 
ROWS= int(input("number of grades per student: ")) 


def main(COLS,ROWS): 
    number =[] 


    for c in range(COLS): 
     student =(input("enter student Name: ")) 
     number.append(student) 

     for r in range (ROWS): 
      course=input("Enter course Code: ") 
      number.append(course) 
      grades =(input("Enter grade for module: ")) 
      number.append(grades) 

    print(number) 

main(COLS,ROWS) 

Пример вывода является:

number of students to enter: 3 
number of grades per student: 2 
enter student Name: LarryH 
Enter course Code: Math202 
Enter grade for module: 80 
Enter course Code: Sci101 
Enter grade for module: 90 
enter student Name: JeromeK 
Enter course Code: TT101 
Enter grade for module: 60 
Enter course Code: PSY205 
Enter grade for module: 50 
enter student Name: CheungL 
Enter course Code: PS100 
Enter grade for module: 80 
Enter course Code: Math300 
Enter grade for module: 50 
['LarryH', 'Math202', '80', 'Sci101', '90', 'JeromeK', 'TT101', '60', 'PSY205', '50', 'CheungL', 'PS100', '80', 'Math300', '50'] 

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

Я пытаюсь вместо моего вывода производства, что 1d список, производит 2d списка, например:

[ 
    ["Andre", "MA22", 79, "MA300", 88, "CM202", 69], 
    ["Larry", "PS44", 67, "MA555", 80, "ACC200", 67], 
    ... 
    ] 

Кто-нибудь есть какие-либо предложения относительно того, что я могу изменить в своем коде для получения желаемого выход как и выше,

Спасибо

ответ

0

в первом цикле, вы можете создать новый временный массив для хранения данных для этого конкретного студента, например:

for c in range(COLS): 
    studentInfo = [] # Info per-student 
    student =(input("enter student Name: ")) 
    studentInfo.append(student) 

    for r in range (ROWS): 
     course=input("Enter course Code: ") 
     studentInfo.append(course) 
     # ... 
     # ... 

    number.append(studentInfo) 

Вы также можете изучить информацию о студенте в словарях, а не в списках, чтобы заказ не был таким же важным. Таким образом, вместо:

singleStudentInfo = ["Andre", "MA22", 79, "MA300", 88, "CM202", 69] 

Вы бы:

singleStudentInfo = {"name": "Andre", "MA22": 79, "MA300": 88, "CM202": 69} 
+0

Я попытался это, но для моего результата все, что я получил: [] – Giovanni

+0

пустого поля в качестве выходного – Giovanni

+0

я немного изменил мой ответ для вас , Вам нужно добавить всю информацию о студенте в этот временный массив _studentInfo_, а затем в конце цикла in in (COLS): loop, укоренил studentInfo в массиве чисел. – J3Y

Смежные вопросы