<p>根据您定义的<code>gradeMap</code>字典,您可以使用所谓的<a href="https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions" rel="nofollow noreferrer">list comprehension</a>做一些事情。你知道吗</p>
<p>我所说的使用Python解释器完成的示例:</p>
<pre><code>>>> grades = ['a', 'c-', 'c']
>>> gradeMap = {'a+': 4.0, 'a': 4.0, 'a-': 3.7, 'b+': 3.3, 'b': 3.0,'b-': 2.7,
... 'c+': 2.3, 'c': 2.0, 'c-': 1.7, 'd+': 1.3, 'd': 1.0, 'f': 0.0}
>>> [gradeMap[grade] for grade in grades] #here's the list comprehension
[4.0, 1.7, 2.0]
</code></pre>
<p>我认为这种方法的缺点可能是确保用户只给你在<code>gradeMap</code>中定义的分数,否则它会给你一个<code>KeyError</code>。你知道吗</p>
<p>另一种选择是使用<a href="https://docs.python.org/3.7/library/functions.html#map" rel="nofollow noreferrer">^{<cd4>}</a>。<code>map</code>稍有不同,它需要一个函数和一个输入列表,然后将该函数应用于输入列表。你知道吗</p>
<p>一个非常简单的函数只适用于几个等级的示例:</p>
<pre><code>>>> def convert_grade_to_points(grade):
... if grade == 'a':
... return 4.0
... elif grade == 'b':
... return 3.0
... else:
... return 0
...
>>> grades = ['a', 'b', 'b']
>>> map(convert_grade_to_points, grades)
[4.0, 3.0, 3.0]
</code></pre>
<p>这也有我前面提到的缺点,即您定义的函数必须处理用户输入无效等级的情况。你知道吗</p>