字母等级功能

时间:2011-02-04 10:38:10

标签: python new-operator

我是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 :(得分:5)

Python有一种叫做字典的东西。它们可以获取一个值(称为“键”)并返回与该键关联的值。这就像在字典中查找某些内容的定义一样。

例如:

test = { 'a': 4.0, 'b': 3.0 }

上面创建了一个字典,它将值4.0与键“a”相关联,而3.0与键“b”相关联。您可以使用[]运算符来查找值:

print test["a"]
4.0

应该明白如何扩展这一点以实现您的所有要求。

答案 1 :(得分: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并通过查看参数的第一个字符来计算结果,检查后面是否有+-,并将所有这些加在一起。< / p>

答案 2 :(得分: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

因为这是家庭作业:弄清楚它是如何工作的并且改变它以便它是一个留作练习的功能:)

这不会验证成绩是否在语法上正确,但也可用于“成绩”aBBa-B+CA++++