在列表中找到非唯一值时接收错误代码

时间:2016-06-20 13:57:03

标签: python error-handling

所以我们的任务是在列表中找到非唯一项目,如果两个“学生”拥有相同的学生ID号,则返回错误消息。 “您的程序必须至少检测并显示有关以下可能错误的信息: 1.如果数据中的两名学生具有相同的学生ID。 2.如果数据集中的等级不是7步骤[-3,0,2,4,7,10,12]中可能等级之一。“

列表是一个n x m矩阵,其中n是学生数量,m是作业数量。 Example of matrix现在我们知道len通常可以用来比较向量的长度,所以首先我们尝试了下面的代码。

import pandas as pd
import numpy as np

#Funktioner:

#Oploadfunktion:

grades = pd.read_csv("mads.csv", sep=",")
grades1=np.array(grades)   
sid=grades1[:,0]   
myset= set(sid)
a=np.size(grades1[:,0])
b=np.size(grades1[0,:]) 
grades2=np.array(grades.iloc[0:a,2:b])


if len(myset)<len(sid):
    print("Student Id used twice")
else: print("All good in the hood")
for i in grades2[i]:
    if i in grades2[i] != **[-3,0,2,4,7,10,12]**:
        print("Grades not valid")
        break
    else:
        print("All good in the hood")

我们知道代码的第一部分告诉我们学生ID是否被使用了两次,但是没有确定它发生的位置或程度。如你所见,作业的第二部分,我们完全迷失了。我们提供所有帮助。

1 个答案:

答案 0 :(得分:1)

您可以像这样迭代您的成绩列表:

for grade in grades2:

在每次迭代中,将变量等级与允许等级列表中的所有变量进行比较,如下所示:

    if grade not in [-3,0,2,4,7,10,12]:

所以完整的代码是:

for grade in grades2:
    if grade not in [-3,0,2,4,7,10,12]:
        print("Grades not valid, {:}".format(grade))
        break
    else:
        print("All good in the hood")