You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何格式化含成绩的最终消息并实现成绩自动转换功能?

How to Format and Dynamically Generate Course Grade Messages

Let's break down your questions one by one with practical, Python-focused solutions:

1. Formatting the Final Message to Display Grades

When showing final grades, clarity and readability are key. Python offers several clean ways to format your message:

  • F-strings (Python 3.6+): This is the most concise and readable method. You can directly embed variables inside the string using curly braces {}.

    earned_percent = 65.9
    earned_grade = "C"
    message = f"If things keep going the way they are, you should get a {earned_percent}% in the course, which is a {earned_grade}."
    print(message)
    
  • String concatenation: If you prefer combining strings directly, just make sure to convert numeric values to strings first:

    message = "If things keep going the way they are, you should get a " + str(earned_percent) + "% in the course, which is a " + earned_grade + "."
    print(message)
    
  • str.format() method: A more flexible option if you need to reuse the format string multiple times:

    message_template = "If things keep going the way they are, you should get a {}% in the course, which is a {}."
    message = message_template.format(earned_percent, earned_grade)
    print(message)
    

All three methods will output your desired example message:

If things keep going the way they are, you should get a 65.9% in the course, which is a C.

2. Converting the Function to Use gradePercent and letterGrade

Let's wrap this logic into a reusable function that accepts gradePercent and letterGrade as parameters. Here's a clean implementation using f-strings:

def generate_grade_message(grade_percent, letter_grade):
    return f"If things keep going the way they are, you should get a {grade_percent}% in the course, which is a {letter_grade}."

# Example usage
print(generate_grade_message(65.9, "C"))

This fixes the syntax error in your original code snippet (you were missing + operators and didn't convert the numeric earnedPercent to a string). The function will output exactly the example message you provided when passed those values.

3. Handling Dynamic Inputs (Clamping Percentages and Mapping Letter Grades)

To make this system dynamic—accepting any input percentage, clamping it to 0-100%, and automatically assigning the correct letter grade—we can add two helper steps:

Step 1: Clamp the percentage to 0-100%

First, ensure the input percentage never goes below 0 or above 100:

def clamp_percentage(percent):
    return max(0.0, min(100.0, percent))

Step 2: Map percentage to letter grade

Define your grading scale (adjust the ranges to match your course's requirements—here's a common scale, but you can tweak it):

def get_letter_grade(percent):
    if percent >= 90:
        return "A"
    elif percent >= 80:
        return "B"
    elif percent >= 70:
        return "C"
    elif percent >= 60:
        return "D"
    else:
        return "F"

Step 3: Combine everything into a full workflow

Now, create a function that takes a raw input percentage, processes it, and returns the final message:

def generate_dynamic_grade_message(raw_percent):
    clamped_percent = clamp_percentage(raw_percent)
    letter_grade = get_letter_grade(clamped_percent)
    return f"If things keep going the way they are, you should get a {clamped_percent}% in the course, which is a {letter_grade}."

# Test cases
print(generate_dynamic_grade_message(65.9))  # Outputs your example message
print(generate_dynamic_grade_message(95.5))  # Outputs: "If things keep going the way they are, you should get a 95.5% in the course, which is a A."
print(generate_dynamic_grade_message(105))   # Clamps to 100%: "If things keep going the way they are, you should get a 100.0% in the course, which is a A."
print(generate_dynamic_grade_message(-5))    # Clamps to 0%: "If things keep going the way they are, you should get a 0.0% in the course, which is a F."

This way, no matter what input percentage you provide, it will stay within the valid 0-100% range, and the corresponding letter grade will be assigned automatically.

内容的提问来源于stack exchange,提问作者KPS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:34:18