2015-03-06 3 views
0

Мне нужен двумерный список для хранения информации об учениках и их оценках.Как создать двумерный список

Когда я запускаю свою программу, я просто получаю один список чисел, но мне нужны разные списки для каждого ученика.

Это то, что я сделал до сих пор:

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

def main(): 
    number =[] 
for c in range(COLS): 
    grades = [] 
    student =(input("enter student ID number ")) 
    number.append(student) 
    number.append(grades) 

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

print(number) 

Когда я запускаю программу, он говорит, что есть отступ блок и выделить «сорт» Что я делаю неправильно?

ответ

1

Код с правильным отступом:

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

def main(): 
    number =[] 

    for c in range(COLS): 
     grades = [] 
     student =(input("enter student ID number ")) 
     number.append(student) 
     number.append(grades) 

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

    print(number) 

main() 

Теперь он выполняет.

Вот альтернативная версия, лучше IMO:

from collections import OrderedDict 

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

def main(): 
    student_grades = OrderedDict() 

    for c in range(COLS): 

     student =(input("enter student ID number: ")) 
     student_grades[student] = [] 

     for r in range(ROWS): 
      grade =(input("Enter grade for module: ")) 
      student_grades[student].append(grade) 

    print(student_grades) 
    # exaple output OrderedDict([('123', ['2', '3']), ('412', ['4', '5'])]) 

main()  
1

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

students= int(input("number of students to enter: ")) 
grades= int(input("number of grades per student: ")) + 1 

class = [] 
for i in range(students): 
    for j in range(grades): 
     if j == 0: 
      m = input("Please input Student ID: ") 
      class.append(m) 
     elif: 
      m = input("Please input %j th grade: ") 
      class.append(m) 
0

Двумерные списки выглядят следующим образом:

two_dim = [[0,1,1,1,1,1], 
      [1,0,1,0,0,0], 
      [1,1,0,1,1,0]] 

Таким образом, строки отличаются друг от друга nt, и они объединены в другом списке. Для вызова элемента, вам просто нужно ввести

two_dim[row_number][column_number] 

Это был общий ответ на поисковик Google, теперь для вашей проблемы, вам нужно обернуть ваш вклад в скобках передать строки в виде списка, а не в конечном итоге одномерный список. Я хотел бы использовать что-то вроде этого, вместо:

student_count= int(input("number of students to enter ")) 
grade_count = int(input("number of grades per student ")) 

grades = [] 

for i in range(student_count): 
    print("The next student") 
    grades.append([int(input("The next student grade")) for j in range(grade_count)]) 

print(grades) 
0

Matrix = [5][5]

Matrix = [[0 for x in range(5)] for x in range(5)]

Теперь вы можете добавлять элементы в список:

Matrix[0][0] = 1 Matrix[4][0] = 5 print Matrix[0][0] # prints 1 print Matrix[4][0] # prints 5

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