字母等级函数
我刚开始学习Python,想写一个函数,这个函数可以接收一个字母成绩(比如a、b、c、d、f,可能还会有加号或减号),然后返回一个数字成绩。数字成绩的对应值是4、3、2、1、0。所以A对应4.0,B对应3.0。如果是A+,那么数字成绩就会增加0.3,而A-则会减少0.3。无论是大写字母还是小写字母都可以使用。这里有一些例子。
>>> letter2number('A-')
3.7
>>> letter2number('B+')
3.3
>>> letter2number('D')
1.0
>>> letter2number('a+')
4.3
我不知道从哪里开始写这个代码,我到处寻找一些有用的代码。
3 个回答
0
>>> grades = {'a':4, 'b':3, 'c':2, 'd':1, '+':0.3, '-':-0.3}
>>> sum([grades[x.lower()] for x in 'c+'])
2.3
>>> sum([grades[x.lower()] for x in 'D-'])
0.7
>>> sum([grades[x.lower()] for x in 'A+'])
4.3
因为这是作业:要弄明白它是怎么工作的,并且把它改成一个函数,留给你自己去练习 :)
这个代码并没有检查成绩的语法是否正确,但也能处理像 'grades' aBBa
、-B+C
和 A++++
这样的情况。
0
好问题。这里有几个建议:
你可以用暴力破解的方法来解决这个问题。可以用一个字典来存储所有可能的字母代码作为键,成绩作为值:
mygrades = {"a+": 4.3, "a": 4.0, "a-": 3.7 } # etc.
你需要把输入转换成小写字母,这样就不会因为"A+"而出错。而且你应该使用一个 try...except KeyError:
的结构来捕捉那些不合法的输入。
如果你让整个过程更灵活一些,那就更好了。例如,你可以定义 best = 4.0, worst= 1.0, step = -1.0, between = 0.3
,然后通过查看你输入的第一个字符,检查后面是否有 +
或 -
,把这些都加起来来计算结果。
5
Python 有一种叫做字典的东西。字典可以把一个值(叫做“键”)和一个与这个键相关联的值联系起来。这就像在字典里查找某个词的定义一样。
举个例子:
test = { 'a': 4.0, 'b': 3.0 }
上面的代码创建了一个字典,把值 4.0 和键 “a” 关联起来,把值 3.0 和键 “b” 关联起来。你可以用 []
操作符来查找这些值:
print test["a"]
4.0
很明显,这种方式可以扩展来满足你所有的需求。