【问题标题】:How to classify float as grades如何将浮点数分类为等级
【发布时间】:2021-10-07 18:44:38
【问题描述】:

我是编程新手,遇到了一些问题。希望我能得到以下问题的帮助:

我有一本包含姓名和成绩的字典。问题是“创建一个函数,它将一个等级作为浮点数作为输入,并输出一个表示等级分类的字符串。 例如。

创建一个字典理解,它将对每个值应用grade_to_classification。提示:{k: v ... 将值 v 存储在键 k 处。我们希望将grade_to_classification 的返回值存储在该等级上(即本例中的grade_to_classification(v))

这是我编写的代码,但它给了我 {} 作为答案。

student_records : {'Ada': 98.0, 'Bill': 45.0, 'Charlie': 63.2, 'Teri': 35.0, 'Johanna': 52.5, 'Tomas': 37.8, 'Piotr': 65.0, 'Grzegorz': 64.8}

name = student_records.keys()
grade = student_records.values()

def grade_to_classification(grade):
    if grade < 40.0: return "Fail"
    elif grade >40.0 and v <50.0: return "Pass"
    elif grade >50.0 and v <60.0: return "2.2"
    elif grade >60.0 and v <70.0: return "2.1"
    elif grade >70.0: return "First"

classified_student_records = {k:grade_to_classification(v) for k, v in student_records.items() if v== float}
print(classified_student_records)

我做错了什么?

【问题讨论】:

    标签: python jupyter-notebook


    【解决方案1】:

    v == float 将始终为假。我想你想要的是isinstance(v, float)——尽管这也是不必要的,因为你已经知道所有的值都是浮点数。

    【讨论】:

    • 如果我取出 if v == float ,它告诉我 v 没有定义。当我使用 isinstance(v, float) 时,我得到无效的语法
    • 您是否在理解 v 的定义或函数内部(其中值绑定到名称 grade,而不是 v)的理解中遇到该错误?
    【解决方案2】:

    您的代码几乎可以工作了。这里有两个问题。首先,完全删除if v == float,这是不必要的。

    一旦你解决了这个问题,你会注意到一个关于无法识别的符号的错误(特别是 NameError),并且看到这似乎是家庭作业,我会让你先尝试一下,看看你是否能解决它。

    提示:当您引用不存在的内容时会发生此错误。

    【讨论】:

    • 非常感谢。我替换了我的 if 语句中的 v 并将其整理出来。你们摇滚!
    • @Grace 如果您不介意接受答案(左侧的复选标记)来关闭它,那就太好了。没问题!
    猜你喜欢
    • 2014-10-04
    • 1970-01-01
    • 2021-08-17
    • 2020-11-29
    • 2019-01-21
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多