我是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
我不知道从哪里开始编码,我一直在寻找一些有用的代码。
答案 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+C
和A++++