Python:如何添加“;最终等级”;我的评分系统计算器中的转换器

Python:如何添加“;最终等级”;我的评分系统计算器中的转换器,python,Python,我有点想做什么,但我想不出来。该程序需要能够获得学生姓名和三个测试分数,然后从三个分数中获得平均分数(百分比)。之后,您需要将分数(百分比)转换为分数 编辑: 我要如何去除中间的空间和“%”? 请按“回车”开始 输入您的姓名:乔丹·辛普森 第一次考试分数:67% 第二次考试分数:78% 第三次考试分数:89% 最终字母等级:C+ 乔丹·辛普森考试分数为:78.0% 是否要重新启动程序 评分尺度: input('请按“回车”开始') 尽管如此: 输入数学 studentName=str(

我有点想做什么,但我想不出来。该程序需要能够获得学生姓名和三个测试分数,然后从三个分数中获得平均分数(百分比)。之后,您需要将分数(百分比)转换为分数

编辑: 我要如何去除中间的空间和“%”?

  • 请按“回车”开始
  • 输入您的姓名:乔丹·辛普森
  • 第一次考试分数:67%
  • 第二次考试分数:78%
  • 第三次考试分数:89%
  • 最终字母等级:C+
  • 乔丹·辛普森考试分数为:78.0%
  • 是否要重新启动程序

评分尺度:


input('请按“回车”开始')
尽管如此:
输入数学
studentName=str(输入('输入您的姓名:'))
firstScore=int(浮点(输入('First test score:')。替换('%,''))
secondScore=int(浮点(输入('Second test score:')。替换('%',''))
thirdScore=int(浮点(输入('Third test score:')。替换('%',''))
得分平均=(第一分+第二分+第三分)/3
def等级():

如果scoreAvg>=93并且不确定你的问题是什么,但是这里有一个更简洁的方法来获得字母等级

>>> scores = [93, 89, 87, 83, 79, 77, 73, 69, 67, 60, 0]
>>> grades = ['A', 'A-', 'B+', 'B', 'B-', 'C+', 'C', 'C-', 'D+', 'D', 'F']
>>> 
>>> def gradeFor(s):
...     grade_scores = zip(scores, grades)
...     for score, grade in grade_scores:
...        if s >= score:
...            return grade

>>> gradeFor(87)
B+
>>> gradeFor(89)
A-
>>> gradeFor(88)
B+
>>> gradeFor(67)
D+
>>> gradeFor(72)
C-
>>> gradeFor(40)
F
还有,你可以

if endProgram.lower() in ('no', 'false'):

我不确定你的问题是什么,但这里有一个更简洁的方法来获得字母等级

>>> scores = [93, 89, 87, 83, 79, 77, 73, 69, 67, 60, 0]
>>> grades = ['A', 'A-', 'B+', 'B', 'B-', 'C+', 'C', 'C-', 'D+', 'D', 'F']
>>> 
>>> def gradeFor(s):
...     grade_scores = zip(scores, grades)
...     for score, grade in grade_scores:
...        if s >= score:
...            return grade

>>> gradeFor(87)
B+
>>> gradeFor(89)
A-
>>> gradeFor(88)
B+
>>> gradeFor(67)
D+
>>> gradeFor(72)
C-
>>> gradeFor(40)
F
还有,你可以

if endProgram.lower() in ('no', 'false'):

你目前的计划似乎能完成任务?只需添加scoreAvg作为参数并捕获返回值。虽然我想有一个python专家可以给出一个更简洁的方法来实现这一点,但是不需要在grade()方法中多次检查分数。尝试
if scoreAvg>93:return'A'if scoreAvg>89:return'A-'
etc.@Moop第35行,打印(grade[scoreAvg])TypeError:“function”对象不可订阅您还可以使用带有等级和值的字典:py您当前的程序似乎可以完成这项工作?只需添加scoreAvg作为参数并捕获返回值。虽然我想有一个python专家可以给出一个更简洁的方法来实现这一点,但是不需要在grade()方法中多次检查分数。尝试
if scoreAvg>93:如果scoreAvg>89:返回'A-'
etc.@Moop第35行,打印中(grade[scoreAvg])类型错误:“函数”对象不可订阅您还可以使用一个字典,其中的等级和值:Pline 24,打印中(gradeFor[scoreAvg])TypeError:“function”对象不是subscriptable或生成器:
def gradeFor(s):返回next(分数的等级,如果s>=score,则等级中的等级)
我在代码中修复了这个问题。您需要为[scoreAvg]调用
grade
gradeFor(scoreAvg)
。。。不是
()
而是
[]
@JordanSimps它是一个函数,而不是一个数组-使用圆括号
gradeFor(scoreAvg)
你让它比需要的更难阅读:
gradeFor(s):for grade,在zip中的分数(grades,scores):如果s>=分数:返回分数
24行,打印中(gradeFor[scoreAvg])类型错误:“函数”对象不是subscriptableOr生成器:
def gradeFor(s):返回下一个(分数的评分,如果s>=分数,则以分数的评分)
我在你的代码中修正了这一点。你需要调用
gradeFor[scoreAvg]
gradeFor(scoreAvg)
…不是
()
而不是
@JordanSimps它是一个函数,不是一个数组-使用圆括号。
gradeFor(scoreAvg)
你让阅读变得比需要的更难:
grade for(s):for grade,在zip中打分(grades,scores):if s>=分数:返回分数