[Solved] My Python code is looping at the wrong place


its easy to get confused when you have a big chunk of code like this … instead try and split your problem into smaller parts

start with a function to get the details of only one student

def get_student_detail(num_tests): # get the detail for just 1 student!
    student_name = input("Enter Student Name:")
    scores = []
    for i in range(1,num_tests+1):
        scores.append(float(input("Enter Score on test %s:"%i)))
    return {'name':student_name,'scores':scores,'avg':sum(scores)/float(num_tests)}

now just call this for each student

student_1 = get_student_detail(num_tests=3)
student_2 = get_student_detail(num_tests=3)
student_3 = get_student_detail(num_tests=3)

print("Student 1:",student_1)
print("Student 2:",student_2)
print("Student 3:",student_3)

or better yet implement a function that lets you keep going as long as you want

def get_students():
    resp="a"
    students = []
    while resp[0].lower() != "n":
        student = get_student_detail(num_tests=3)
        students.append(student)
        resp = input("Enter another students details?")
    return student

you may want to split out get_student_details even further writing a method to get a single test score and validate that its actually a number (this will crash as is if you enter something that isnt a number as a test score), or to keep asking for test scores until an empty response is given, etc

def get_number(prompt):
    while True:
         try: 
            return float(input(prompt))
         except ValueError:
            print ("That is not a valid number!")

def get_test_score(prompt):
    while True:
        score = get_number(prompt)
        if 0 <= score <= 100:
             return score
        print("Please enter a value between 1 and 100!")

test_score = get_test_score("Enter test score for test 1:")
print(test_score)

0

solved My Python code is looping at the wrong place