所以我们的任务是在列表中找到非唯一项目,如果两个“学生”拥有相同的学生ID号,则返回错误消息。 “您的程序必须至少检测并显示有关以下可能错误的信息: 1.如果数据中的两名学生具有相同的学生ID。 2.如果数据集中的等级不是7步骤[-3,0,2,4,7,10,12]中可能等级之一。“
列表是一个n x m矩阵,其中n是学生数量,m是作业数量。 现在我们知道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是否被使用了两次,但是没有确定它发生的位置或程度。如你所见,作业的第二部分,我们完全迷失了。我们提供所有帮助。
答案 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")