Using a loop to create multiple lists with user inputs

Question:

I’m trying to create 13 different lists (student1 to student13), all with the same structure. Each list has to be filled with the following inputs.

student = []

name = input('Input the name of the student: ')

password = input('Input the 8 digit password: ')
while len(password) != 8:

    print('Password is not 8 digits long!')
    password = input('Input the 8 digit password: ')

grade1 = float(input('Input the first grade between 0 and 10: '))
while grade1 < 0 or grade1 > 10:

    print('Invalid grade!')
    grade1 = float(input('Input the first grade between 0 and 10: '))

grade2 = float(input('Input the second grade between 0 and 10: '))
while grade2 < 0 or grade2 > 10:

    print('Invalid grade!')
    grade2 = float(input('Insert the second grade between 0 and 10: '))

average = (grade1 + grade2) / 2

student.append(name)
student.append(password)
student.append(average)

Is there a way to create a loop to fill 13 different lists with these inputs, or do I have to manually create the inputs for each of the lists?

Asked By: Ian Lohan

||

Answers:

Not sure if you really want to use input() for that task, but here you go:
students is a list of lists with 13 elements, one for each student.

students = []

for i in range(13):
    student = []
    print(f"nYou are working on student {i+1}")

    name = input('Input the name of the student: ')

    password = input('Input the 8 digit password: ')
    while len(password) != 8:

        print('Password is not 8 digits long!')
        password = input('Input the 8 digit password: ')

    grade1 = float(input('Input the first grade between 0 and 10: '))
    while grade1 < 0 or grade1 > 10:

        print('Invalid grade!')
        grade1 = float(input('Input the first grade between 0 and 10: '))

    grade2 = float(input('Input the second grade between 0 and 10: '))
    while grade2 < 0 or grade2 > 10:

        print('Invalid grade!')
        grade2 = float(input('Insert the second grade between 0 and 10: '))

    average = (grade1 + grade2) / 2

    student.append(name)
    student.append(password)
    student.append(average)  
Answered By: bitflip
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.