python问题回答

循环从键盘输入n名学生的百分制分数(Score)(范围要求是[0,100],其他范围的数字打印出“Invalid score”),输出该学生的等级分数(Grade)的程序。并打印出这些成绩的总分和平均分。2)相同功能,求等级分用函数ToGrade(score)实现,输入分数score,输出为等级分,然后调用函数。等级分具体对应规则为:
Score Grade
[90100] 对应 A
[80
89] 对应B
[7079] 对应C
[60
69] 对应D
[0~59] 对应E

用python实现

【法一】不用函数实现:

img

total_score = 0
count = 0

n = int(input("请输入学生人数:"))

for i in range(n):
    while True:
        score = input("请输入第{}位学生的百分制分数(范围要求是[0,100]):".format(i+1))
        score = int(score)
        if score < 0 or score > 100:
            print("Invalid score,请重新输入")
        else:
            break
    if score >= 90 and score <= 100:
        grade = "A"
    elif score >= 80 and score <= 89:
        grade = "B"
    elif score >= 70 and score <= 79:
        grade = "C"
    elif score >= 60 and score <= 69:
        grade = "D"
    else:
        grade = "E"

    print("第{}位学生的等级分数是:{}".format(i+1, grade))
    total_score += score
    count += 1

if count > 0:
    average_score = total_score / count
    print("这些成绩的总分是:{},平均分是:{:.2f}".format(total_score, average_score))
else:
    print("没有输入任何分数")


【法二】函数实现:

img


def ToGrade(score):
    if score >= 90 and score <= 100:
        return "A"
    elif score >= 80 and score <= 89:
        return "B"
    elif score >= 70 and score <= 79:
        return "C"
    elif score >= 60 and score <= 69:
        return "D"
    elif score >= 0 and score <= 59:
        return "E"
    else:
        return "Invalid score"

total_score = 0
count = 0

n = int(input("请输入学生人数:"))

for i in range(n):
    while True:
        score = input("请输入第{}位学生的百分制分数(范围要求是[0,100]):".format(i+1))
        score = int(score)
        if score < 0 or score > 100:
            print("Invalid score,请重新输入")
        else:
            break
    grade = ToGrade(score)
    print("第{}位学生的等级分数是:{}".format(i+1, grade))
    total_score += score
    count += 1

if count > 0:
    average_score = total_score / count
    print("这些成绩的总分是:{},平均分是:{:.2f}".format(total_score, average_score))
else:
    print("没有输入任何分数")

我看楼上的兄弟写的代码基本逻辑都可以了,但是就是没有完全按照你需要的规范来写。因为程序是两个问题,所以需要按照要求分为两个程序,第一问的程序如下:

'''
循环从键盘输入n名学生的百分制分数(Score)(范围要求是[0,100],其他范围的数字打印出“Invalid score”),
输出该学生的等级分数(Grade)的程序。
并打印出这些成绩的总分和平均分
'''
n = int(input("input student number:"))
total = 0
count = n
while count>0:
    score = int(input("input score:"))
    if score<0 or score>100:
        print("Invalid score")
        continue
    elif score >= 90:
        print("the grade is A")
    elif score >= 80:
        print("the grade is B")
    elif score >= 70:
        print("the grade is C")
    elif score >= 60:
        print("the grade is D")
    else:
        print("the grade is E")

    count-=1
    total += score

avg_score = total / n
print("the total score is:{},average score is :{}".format(total, avg_score))

第2问的程序如下:

'''
相同功能,求等级分用函数ToGrade(score)实现,输入分数score,输出为等级分,然后调用函数。
'''
def ToGrade(score):
    if score < 0 or score > 100:
        return "Invalid score"
    elif score >= 90:
        return "A"
    elif score >= 80:
        return "B"
    elif score >= 70:
        return "C"
    elif score >= 60:
        return "D"
    else:
        return "E"

n = int(input("input student number:"))
total = 0
count = n
while count>0:
    score = int(input("input score:"))
    grade = ToGrade(score)
    if grade == "Invalid score":
        print(grade)
        continue
    else:
        print('the grade is',grade)
    count-=1
    total += score

avg_score = total / n
print("the total score is:{},average score is :{}".format(total, avg_score))

运行结果:

img

img

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
问题一:

scores = []
total = 0
count = 0

while True:
    score_str = input("请输入学生的百分制分数,输入空行结束:")
    if not score_str:  # 输入空行结束输入
        break
    score = int(score_str)
    if score < 0 or score > 100:
        print("Invalid score")
    else:
        scores.append(score)
        total += score
        count += 1

for score in scores:
    if score >= 90:
        grade = "A"
    elif score >= 80:
        grade = "B"
    elif score >= 70:
        grade = "C"
    elif score >= 60:
        grade = "D"
    else:
        grade = "E"
    print("分数为{},等级为{}".format(score, grade))

if count > 0:
    average = total / count
    print("总分为{},平均分为{}".format(total, average))

问题二:

def ToGrade(score):
    if score >= 90:
        grade = "A"
    elif score >= 80:
        grade = "B"
    elif score >= 70:
        grade = "C"
    elif score >= 60:
        grade = "D"
    else:
        grade = "E"
    return grade


scores = []
total = 0
count = 0

while True:
    score_str = input("请输入学生的百分制分数,输入空行结束:")
    if not score_str:  # 输入空行结束输入
        break
    score = int(score_str)
    if score < 0 or score > 100:
        print("Invalid score")
    else:
        scores.append(score)
        total += score
        count += 1

for score in scores:
    grade = ToGrade(score)
    print("分数为{},等级为{}".format(score, grade))

if count > 0:
    average = total / count
    print("总分为{},平均分为{}".format(total, average))

如果我的回答解决了您的问题,请采纳!

引用chatGPT作答,以下是两种不同的实现方式:

1.使用if-else语句实现:

total_score = 0
num_students = int(input("请输入学生数量:"))
for i in range(num_students):
    score = int(input("请输入学生的百分制分数:"))
    if score < 0 or score > 100:
        print("Invalid score")
        continue
    total_score += score
    if score >= 90:
        grade = "A"
    elif score >= 80:
        grade = "B"
    elif score >= 70:
        grade = "C"
    elif score >= 60:
        grade = "D"
    else:
        grade = "E"
    print("该学生的等级分数为:", grade)

average_score = total_score / num_students
print("所有学生的总分数为:", total_score)
print("所有学生的平均分数为:", average_score)

2.使用函数实现:

def to_grade(score):
    if score < 0 or score > 100:
        return "Invalid score"
    elif score >= 90:
        return "A"
    elif score >= 80:
        return "B"
    elif score >= 70:
        return "C"
    elif score >= 60:
        return "D"
    else:
        return "E"

total_score = 0
num_students = int(input("请输入学生数量:"))
for i in range(num_students):
    score = int(input("请输入学生的百分制分数:"))
    grade = to_grade(score)
    print("该学生的等级分数为:", grade)
    if grade != "Invalid score":
        total_score += score

average_score = total_score / num_students
print("所有学生的总分数为:", total_score)
print("所有学生的平均分数为:", average_score)

两种实现方式都可以达到相同的功能,第二种方式更加模块化和易于维护。在第二种实现方式中,我们定义了一个to_grade函数来计算每个学生的等级分数,这使得主函数更加清晰和简洁。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:
    def ToGrade(score):
        if score > 100 or score < 0:
            print("Invalid score")
            return None
        elif score >= 90:
            return "A"
        elif score >= 80:
            return "B"
        elif score >= 70:
            return "C"
        elif score >= 60:
            return "D"
        else:
            return "E"
    
    n = int(input("请输入学生人数:"))
    total_score = 0
    for i in range(n):
        score = int(input("请输入第%d个学生的分数:" % (i + 1)))
        grade = ToGrade(score)
        if grade:
            print("第%d个学生的等级分数为:%s" % (i + 1, grade))
            total_score += score
    average_score = total_score / n
    print("所有学生的总分为:%d,平均分为:%.2f" % (total_score, average_score))
    

    解释说明: 1. 定义了一个ToGrade(score)函数,用于将学生的分数转换为等级分。如果分数超出了[0,100]的范围,则打印“Invalid score”并返回None;根据成绩所在分数段的不同,返回不同的等级分。 2. 从键盘输入学生人数n,并定义一个变量total_score用于记录所有学生的分数总和。 3. 循环n次,每次输入一个学生的分数,调用ToGrade(score)函数将其转换为等级分,并打印输出。 4. 如果ToGrade(score)返回了None则说明输入的分数不合法,不计入总分。 5. 循环结束后,计算所有学生的分数总和total_score,以及平均分average_score,并输出。注意平均分可能会有小数,需要使用格式化字符串("%.2f")将其保留两位小数。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

运行结果:

img

下面是使用 Python 语言实现的代码:

def ToGrade(score):
    if score < 0 or score > 100:
        return "Invalid score"
    elif score >= 90:
        return "A"
    elif score >= 80:
        return "B"
    elif score >= 70:
        return "C"
    elif score >= 60:
        return "D"
    else:
        return "E"

n = int(input("请输入学生数量:"))
total_score = 0

for i in range(n):
    score = int(input("请输入第{}名学生的分数:".format(i + 1)))
    grade = ToGrade(score)
    if grade == "Invalid score":
        print("输入无效分数,请重新输入。")
        continue
    print("第{}名学生的等级分数为:{}".format(i + 1, grade))
    total_score += score

avg_score = total_score / n
print("总分为:{},平均分为:{}".format(total_score, avg_score))


首先定义了一个函数 ToGrade,用来将分数转换为等级分。然后使用 input 函数从键盘读入学生数量和每个学生的分数,将分数转换为等级分,并计算总分和平均分,最后使用 print 函数输出结果。注意,在输入分数时,需要对输入进行合法性检查,如果分数超出了范围,则需要提示用户重新输入。