循环从键盘输入n名学生的百分制分数(Score)(范围要求是[0,100],其他范围的数字打印出“Invalid score”),输出该学生的等级分数(Grade)的程序。并打印出这些成绩的总分和平均分。2)相同功能,求等级分用函数ToGrade(score)实现,输入分数score,输出为等级分,然后调用函数。等级分具体对应规则为:
Score Grade
[90100] 对应 A89] 对应B
[80
[7079] 对应C69] 对应D
[60
[0~59] 对应E
用python实现
【法一】不用函数实现:
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("没有输入任何分数")
【法二】函数实现:
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))
运行结果:
以下答案由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函数来计算每个学生的等级分数,这使得主函数更加清晰和简洁。
不知道你这个问题是否已经解决, 如果还没有解决的话: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")将其保留两位小数。
运行结果:
下面是使用 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 函数输出结果。注意,在输入分数时,需要对输入进行合法性检查,如果分数超出了范围,则需要提示用户重新输入。