首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >修改函数以返回不同的值

修改函数以返回不同的值
EN

Stack Overflow用户
提问于 2018-06-01 23:24:00
回答 4查看 66关注 0票数 -1

我必须修改gp函数,这样它才能通过加减0.3分来处理+和-级。例如,B+相当于3.3分,C-相当于1.7分。

举例说明。

代码语言:javascript
复制
>>> gp('A-')
3.7

>>>gp('B+')
3.3

我的建议是,我可以只添加一堆elif子句来单独测试每个分数,但类似的设计是使用对s.startswith的调用来计算字母分数的值,然后使用s.endswith来查看是否应该增加或减去0.3分。

到目前为止,这就是我所拥有的。

代码语言:javascript
复制
def gp(s):
       A = 4
       return A
       B = 3
       return B
       C = 2
       return C
       D = 1
       return D
       F = 0
       return f
EN

回答 4

Stack Overflow用户

发布于 2018-06-01 23:36:26

您可以将成绩和后缀的数值存储在字典中,而不是一系列if/elif语句。此外,您不必使用startswithendswith,只需在检查长度后使用s[0]s[1]来获取字符串中的第一个或第二个字符。您还可以使用s[1:]1的th位置开始获取所有内容,即使它是空的。

代码语言:javascript
复制
grades = {'A': 4, 'B': 3, 'C': 2, 'D': 1, 'F': 0}
signs = {'+': 0.3, '-': -0.3, '': 0}
def gp(s):
    return grades[s[0]] + signs[s[1:]]

>>> gp("A+")
4.3
>>> gp("C-")
1.7
>>> gp("F")
0
票数 3
EN

Stack Overflow用户

发布于 2018-06-01 23:38:15

我的建议是使用字典来计算每个特定等级的分数。使用字典有点像switch语句的Python等效物,通常被认为比长的if/elif/else链更惯用。(我的答案是假设您使用的是标准的4.0 GPA计算尺度。如果没有,显然可以根据您的需要对其进行更改。)

代码语言:javascript
复制
grade_to_points = {
    'A+':   4.0,
    'A':    4.0,
    'A-':   3.7,
    'B+':   3.3,
    'B':    3.0,
    ...
}

def gp(grade):
    points = grade_to_points.get(grade)
    if points is None:
        raise ValueError('{:r} is not a valid grade!'.format(grade))
票数 1
EN

Stack Overflow用户

发布于 2018-06-01 23:36:47

你应该使用字典

代码语言:javascript
复制
def function(grade)
  dict = {'A':4, 'B':3, 'C':2, 'D':1, 'F':0}
  if grade[1] == '+':
    return dict[grade[0]]+0.3
  elif grade[1] == '-':
    return dict[grade[0]] - 0.3

然后根据符号加或减0.3

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50646663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档