Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Description: Write a program called StudentGrades using lists and loops to ask f

ID: 3912955 • Letter: D

Question

Description: Write a program called StudentGrades using lists and loops to ask for student name and 3 test scores.

Calculate the average of the test scores and assign a letter score as follows:

>90 A

80 - 89 B

70 - 79 C

60 - 69 D

<60 F
'''

# make empty list that will be filled later
studentName = [ ]
score1 = [ ]
score2 = [ ]
score3 = [ ]
average = []
grade = [ ]

test_score = 0.0


amountStudents = int(input("How many students? "))

for s in range(0, amountStudents):
# ask user to input student name 1
name = input("Enter name of student " +str(s+1) + ":" )
# add this to empty list
studentName.append(name)

for s in range(0, amountStudents):
enterScore = input('Enter test 1 for ' + studentName[s] + ': ')
score1.append(float(enterScore))

enterScore = input('Enter test 2 for ' + studentName[s] + ': ')
score2.append(float(enterScore))

enterScore = input('Enter test 3 for ' + studentName[s] + ': ')
score3.append(float(enterScore))

for s in range (0, amountStudents):
test_score = 0.0
test_score = float(test_score + score1[s] + score2[s] + score3[s])
test_average = float(test_score / 3.0)
average.append(float(test_average))

if (average [s] > int(90)):
# add to grade list and assign A for this condition
grade.append("A")
  
elif (int(80) <= test_average [s] <= int(89)):
grade.append("B")

elif (int(70) <= test_average [s] <= int(79)):
grade.append("D")

elif (test_average[s] < int(60)):
grade.append("F")

# for loop to print test average and final grade
for s in range(0, amountStudents):
final_average = studentName[s] + "'s test average: " + format(average[s], '.2f')
print(final_average)
final_grade = studentName[s] + "'s final grade: " + grade[s]
print(final_grade)

elif (int(80) <= test_average [s] <= int(89)):
TypeError: 'float' object is not subscriptable

I have no idea how to fix it.

Explanation / Answer

# Code

# make empty list that will be filled later

studentName = [ ]

score1 = [ ]

score2 = [ ]

score3 = [ ]

average = []

grade = [ ]

test_score = 0.0

amountStudents = int(input("How many students? "))

for s in range(0, amountStudents):

# ask user to input student name 1

name = input("Enter name of student " +str(s+1) + ":" )

# add this to empty list

studentName.append(name)

for s in range(0, amountStudents):

enterScore = input(' Enter test 1 for ' + studentName[s] + ': ')

score1.append(float(enterScore))

enterScore = input('Enter test 2 for ' + studentName[s] + ': ')

score2.append(float(enterScore))

enterScore = input('Enter test 3 for ' + studentName[s] + ': ')

score3.append(float(enterScore))

for s in range (0, amountStudents):

test_score = 0.0

test_score = float(test_score + score1[s] + score2[s] + score3[s])

test_average = float(test_score / 3.0)

average.append(float(test_average))

if (average [s] > int(90)):

# add to grade list and assign A for this condition

grade.append("A")

elif (int(80) <= average [s] <= int(89)):

grade.append("B")

elif (int(70) <= average [s] <= int(79)):

grade.append("C")

elif (int(60) <= average [s] <= int(69)):

grade.append("D")

elif (average[s] < int(60)):

grade.append("F")

# for loop to print test average and final grade

for s in range(0, amountStudents):

print()

final_average = studentName[s] + "'s test average: " + format(average[s], '.2f')

print(final_average)

final_grade = studentName[s] + "'s final grade: " + grade[s]

print(final_grade)

''' SAMPLE OUTPUT

How many students? 2

Enter name of student 1: Chegg

Enter name of student 2: India

Enter test 1 for Chegg: 45

Enter test 2 for Chegg: 90

Enter test 3 for Chegg: 87

Enter test 1 for India: 32

Enter test 2 for India: 99

Enter test 3 for India: 67

Chegg's test average: 74.00

Chegg's final grade: C

India's test average: 66.00

India's final grade: D

'''

''' EXPLANATION

There are 2 mistakes. I highlighted the rewritten code.

'''

# Code

# make empty list that will be filled later

studentName = [ ]

score1 = [ ]

score2 = [ ]

score3 = [ ]

average = []

grade = [ ]

test_score = 0.0

amountStudents = int(input("How many students? "))

for s in range(0, amountStudents):

# ask user to input student name 1

name = input("Enter name of student " +str(s+1) + ":" )

# add this to empty list

studentName.append(name)

for s in range(0, amountStudents):

enterScore = input(' Enter test 1 for ' + studentName[s] + ': ')

score1.append(float(enterScore))

enterScore = input('Enter test 2 for ' + studentName[s] + ': ')

score2.append(float(enterScore))

enterScore = input('Enter test 3 for ' + studentName[s] + ': ')

score3.append(float(enterScore))

for s in range (0, amountStudents):

test_score = 0.0

test_score = float(test_score + score1[s] + score2[s] + score3[s])

test_average = float(test_score / 3.0)

average.append(float(test_average))

if (average [s] > int(90)):

# add to grade list and assign A for this condition

grade.append("A")

elif (int(80) <= average [s] <= int(89)):

grade.append("B")

elif (int(70) <= average [s] <= int(79)):

grade.append("C")

elif (int(60) <= average [s] <= int(69)):

grade.append("D")

elif (average[s] < int(60)):

grade.append("F")

# for loop to print test average and final grade

for s in range(0, amountStudents):

print()

final_average = studentName[s] + "'s test average: " + format(average[s], '.2f')

print(final_average)

final_grade = studentName[s] + "'s final grade: " + grade[s]

print(final_grade)

''' SAMPLE OUTPUT

How many students? 2

Enter name of student 1: Chegg

Enter name of student 2: India

Enter test 1 for Chegg: 45

Enter test 2 for Chegg: 90

Enter test 3 for Chegg: 87

Enter test 1 for India: 32

Enter test 2 for India: 99

Enter test 3 for India: 67

Chegg's test average: 74.00

Chegg's final grade: C

India's test average: 66.00

India's final grade: D

'''

''' EXPLANATION

There are 2 mistakes. I highlighted the rewritten code.

  1. You have used test_average[s] instead of average[s]
  2. You forgot to put grade C

'''