【问题标题】:Check if a student has passed a class检查学生是否通过了课程
【发布时间】:2022-01-08 19:34:40
【问题描述】:

我在字典中有一个列表/字典,我想检查一个特定的人是否通过了该主题。字典是这样的:

students = {
'Peter': ['Economy', {'PRO100': 'B', 'PRO110': 'C', 'DAT130': F}], 
'James': ['Psychology', {'MAT120': C, 'PRO100': B, 'DAT120': A}]
}

A 是最好成绩,F 是不及格。 “经济”和“心理学”显示科目所属的部门。

我想要这样的功能:

def check(student, subject)

我可以在哪里检查通过/失败:

check('Peter', 'PRO100')
>>> True
check('Peter', 'DAT130')
>>> False

我想我可以在函数中使用 for 循环,但我不知道如何...

【问题讨论】:

  • 你有什么尝试,你有一些不能正常工作的代码我们可以帮忙吗?目前,您似乎希望有人为您编写所有代码。请阅读Asking 的帮助部分,特别是How to AskHow to create a Minimal, Reproducible Example
  • 阅读dictionaries 并尝试相应地实施。如果您在这样做时遇到任何问题,请在此处发布您的代码,我们将很乐意提供帮助。

标签: python dictionary


【解决方案1】:

试试这个代码:

students = {
'Peter': ['Economy', {'PRO100': 'B', 'PRO110': 'C', 'DAT130': 'F'}], 
'James': ['Psychology', {'MAT120': 'C', 'PRO100': 'B', 'DAT120': 'A'}]
}

passed_grades = ['A', 'B', 'C']

def check(student, subject):
    if students[student][1][subject] in passed_grades:
        return True
    return False

【讨论】:

    【解决方案2】:

    这是您的代码的答案:

    students = {
        'Peter': [
            'Economy', {
                'PRO100': 'B', 
                'PRO110': 'C', 
                'DAT130': 'F'
            }
        ], 
        'James': [
            'Psychology', {
                'MAT120': 'C', 
                'PRO100': 'B', 
                'DAT120': 'A'
            }
        ]
    }
    
    good_grades = ['A', 'B', 'C']
    bad_grades = ['D', 'E', 'F']
    
    def check(student, subject):
        for subjects in students[student]:
            subjectList = subjects
        
        for grade in subjectList:
            if grade == subject:
                if subjectList[grade] in good_grades:
                    return True
                if subjectList[grade] in bad_grades:
                    return False
                
        return 'Not Found'
        
        
    check('Peter', 'PRO100')
    

    示例:

    check('Peter', 'DAT130')
    False
    
    check('James', 'DAT120')
    True
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多