Average Grade

\[ \begin{align}\begin{aligned}\newcommand\blank{~\underline{\hspace{1.2cm}}~}\\% Bold symbols (vectors) \newcommand\bs[1]{\mathbf{#1}}\\% Poor man's siunitx \newcommand\unit[1]{\mathrm{#1}} \newcommand\num[1]{#1} \newcommand\qty[2]{#1~\unit{#2}}\\\newcommand\per{/} \newcommand\squared{{}^2} % % Scale \newcommand\milli{\unit{m}} \newcommand\centi{\unit{c}} \newcommand\kilo{\unit{k}} \newcommand\mega{\unit{M}} % % Angle \newcommand\radian{\unit{rad}} \newcommand\degree{\unit{{}^\circ}} % % Time \newcommand\second{\unit{s}} % % Distance \newcommand\meter{\unit{m}} \newcommand\m{\meter} \newcommand\inch{\unit{in}} \newcommand\feet{\unit{ft}} \newcommand\mile{\unit{mi}} \newcommand\mi{\mile} % % Volume \newcommand\gallon{\unit{gal}} % % Mass \newcommand\gram{\unit{g}} \newcommand\g{\gram} % % Frequency \newcommand\hertz{\unit{Hz}} \newcommand\rpm{\unit{rpm}} % % Voltage \newcommand\volt{\unit{V}} \newcommand\V{\volt} \newcommand\millivolt{\milli\volt} \newcommand\mV{\milli\volt} \newcommand\kilovolt{\kilo\volt} \newcommand\kV{\kilo\volt} % % Current \newcommand\ampere{\unit{A}} \newcommand\A{\ampere} \newcommand\milliampereA{\milli\ampere} \newcommand\mA{\milli\ampere} \newcommand\kiloampereA{\kilo\ampere} \newcommand\kA{\kilo\ampere} % % Resistance \newcommand\ohm{\Omega} \newcommand\milliohm{\milli\ohm} \newcommand\kiloohm{\kilo\ohm} % correct SI spelling \newcommand\kilohm{\kilo\ohm} % "American" spelling used in siunitx \newcommand\megaohm{\mega\ohm} % correct SI spelling \newcommand\megohm{\mega\ohm} % "American" spelling used in siunitx % % Inductance \newcommand\henry{\unit{H}} \newcommand\H{\henry} \newcommand\millihenry{\milli\henry} \newcommand\mH{\milli\henry} % % Temperature \newcommand\celsius{\unit{^{\circ}C}} \newcommand\C{\unit{\celsius}} \newcommand\fahrenheit{\unit{^{\circ}F}} \newcommand\F{\unit{\fahrenheit}} \newcommand\kelvin{\unit{\K}} \newcommand\K{\unit{\kelvin}}\\% Power \newcommand\watt{\unit{W}} \newcommand\W{\watt} \newcommand\milliwatt{\milli\watt} \newcommand\mW{\milli\watt} \newcommand\kilowatt{\kilo\watt} \newcommand\kW{\kilo\watt} % % Torque \newcommand\ozin{\unit{oz}\text{-}\unit{in}} \newcommand\newtonmeter{\unit{N\text{-}m}}\end{aligned}\end{align} \]

Apr 16, 2025 | 264 words | 3 min read

4.2.3. Average Grade#

Write a program that asks the user to enter a valid score five times. The program should display a letter grade after each score is entered. After all the scores are entered, it should display the average of the scores and the letter grade corresponding to that average. Complete your program by writing the following three functions and calling them from within your main function.

get_valid_score

This function should ask the user to enter a score. If the score is less than \(0\) or greater than \(100\), the function should ask the user to re-enter a score, until the user enters a valid one. Finally, the function returns the valid score.

calc_average

This function should accept a list of scores as its only argument and return the average of the scores. It should be able to handle lists of any length.

determine_grade

This function should accept a score as an argument and return a letter grade for the score based on the grading scale in

Table 4.4 The grading scale#

Score

Grade

\([92,100]\)

A

\([82, 92)\)

B

\([73,82)\)

C

\([64,73)\)

D

\([0,64)\)

F

Sample Output#

Use the values in Table 4.5 below to test your program.

Table 4.5 Test Cases#

Case

Scores

1

89, 75, 91, 82, 64

2

93, -7, 101, 100, 0, 82, 65

Ensure your program’s output matches the provided samples exactly. This includes all characters, white space, and punctuation. In the samples, user input is highlighted like this for clarity, but your program should not highlight user input in this way.

Case 1 Sample Output

$ python3 avg_grade_login.py Enter a score: 89 The letter grade for 89.0 is B. Enter a score: 75 The letter grade for 75.0 is C. Enter a score: 91 The letter grade for 91.0 is B. Enter a score: 82 The letter grade for 82.0 is B. Enter a score: 64 The letter grade for 64.0 is D.

Results: The average score is 80.20. The letter grade for 80.20 is C.

Case 2 Sample Output

$ python3 avg_grade_login.py Enter a score: 93 The letter grade for 93.0 is A. Enter a score: -7 Invalid Input. Please try again. Enter a score: 101 Invalid Input. Please try again. Enter a score: 100 The letter grade for 100.0 is A. Enter a score: 0 The letter grade for 0.0 is F. Enter a score: 82 The letter grade for 82.0 is B. Enter a score: 65 The letter grade for 65.0 is D.

Results: The average score is 68.00. The letter grade for 68.00 is D.

Deliverables#

Save your finished program as avg_grade_login.py, replacing login with your Purdue login. Then submit it along with all the deliverables listed in Table 4.6 below.

Table 4.6 Deliverables#

Deliverable

Description

avg_grade_login.py

Your finished program.

Screenshot(s)

PNG(s) capturing both test cases.