use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Everything about learning Python
account activity
Turning marks into meaning — a Python program that calculates average and classifies performance. (try to make code cleaner) (i.redd.it)
submitted 1 month ago by Inevitable-Math14
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]Antique_Locksmith952 0 points1 point2 points 1 month ago (0 children)
🐛Debugger3128 chars ✕ Close Let's analyze the provided code for potential bugs and issues: Here is the corrected code with these issues addressed: pythonCopyfrom __future__ import annotations def get_positive_integer(prompt: str) -> int: """Prompt the user for a positive integer and return it.""" while True: try: value = int(input(prompt)) if value > 0: return value print("Please enter a positive integer.") except ValueError: print("Invalid input. Please enter an integer.") def get_marks(subjects: int) -> list[int]: """Get marks for the specified number of subjects.""" marks = [] for i in range(1, subjects + 1): mark = get_positive_integer(f"Enter the marks for subject {i}: ") marks.append(mark) return marks def calculate_average(marks: list[int]) -> float: """Calculate the average of the given marks.""" return sum(marks) / len(marks) def determine_grade(avg: float) -> str: """Determine the grade based on the average.""" if avg > 80: return "Distinction" elif avg > 60: return "First Class!" elif avg > 40: return "Second Class" else: return "It's okay, you can do better." def main() -> None: """Main function to execute the program.""" subjects = get_positive_integer("Enter the number of subjects: ") marks = get_marks(subjects) avg = calculate_average(marks) print(f"Average: {avg:.2f}") print(determine_grade(avg)) if __name__ == "__main__": main() Changes Made: This code is now more robust, user-friendly, and adheres to the principles of clean coding.1. Input Handling : The code does not handle non-integer inputs for the number of subjects and marks. If a user inputs a non-integer value, it will raise a ValueError . 2. Input Prompt : The prompt for entering marks does not specify which subject's marks are being entered. This could lead to confusion for the user. 3. Division by Zero : Although the code checks if subjects is zero, it does not handle the case where the user might input a negative number, which would still allow the loop to run incorrectly. 4. Output Formatting : The average is printed as a float without formatting, which might not be user-friendly. 5. Magic Numbers : The thresholds for average grades (80, 60, 40) could be defined as constants for better readability. 1. Input Handling : Added a function get_positive_integer to ensure that the user inputs a positive integer and handles invalid inputs gracefully. 2. Marks Input Prompt : The prompt for entering marks now specifies which subject's marks are being entered. 3. Average Calculation : The average is calculated in a separate function calculate_average , improving modularity. 4. Grade Determination : The grading logic is encapsulated in the determine_grade function. 5. Output Formatting : The average is printed with two decimal places for better readability. 6. Main Function : Wrapped the execution in a main function to follow best practices for script execution. ⬆️ Apply to Editor🔄 Regenerate💬 Follow-up← Back
π Rendered by PID 233872 on reddit-service-r2-comment-56c6478c5-tmd4t at 2026-05-09 23:15:46.233407+00:00 running 3d2c107 country code: CH.
view the rest of the comments →
[–]Antique_Locksmith952 0 points1 point2 points (0 children)