如果条件不满足,如何给出错误消息?

2024-09-27 07:34:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我在为一门基础编程课程做作业。你知道吗

我有一个包含以下列的数据帧(csv文件):

   StudentID                       Name  Assignment1  Assignment2  Assignment3 
0    s123456           Michael Andersen            7            7             4
1    s123789           Bettina Petersen           12           10            10
2    s123468             Thomas Nielsen           -3            7             2
3    s123579               Marie Hansen           10           12            12
4    s123579               Marie Hansen           10           12            12
5    s127848            Andreas Nielsen            2            2             2
6    s120799           Mads Westergaard           12           12            10
7    s123456           Michael Andersen            7            7             4
8    S184507  Andreas Døssing Mortensen            2            2             4
9    S129834             Jonas Jonassen            0           -3             4
10   S123481             Milad Mohammed           12           10             7
11   S128310                Abdul Jihad           10            4             7
12   S125493             Søren Sørensen            0            7             7
13   S128363                        123            4            7            10
14   S127463              Jensen Jensen            5            2            10
15   S120987                 Jeff Bezos           12           12            12

我需要让我的程序给出一个错误消息,如果一个条件不符合。在这种情况下,如果一个学生不止一次出现在数据框中,并且如果作业的分数不在分数表上(-3,0,2,4,7,10,12):

任务如下:

如果用户选择检查数据错误,则必须在加载的数据文件中显示错误报告(如果有)。您的程序必须至少检测并显示有关以下可能错误的信息: 1如果数据中的两个学生具有相同的学号。 2如果数据集中的某个等级不是7级量表上可能的等级之一。你知道吗

我怎么才能避开这个?你知道吗

我试过这样解决,但运气不好:

doubles=dataDuplicate[“Name”].duplicated()

打印(双倍)

等级=np.数组([-3,0,2,4,7,10,12])

数据端口等级=数据端口等级.iloc[:,2:]\

等级列表=np.isin公司(数据端口等级,等级)

如果doubles中的dataDuplicate[“Name”]==True: 打印(“错误”) 其他: 打印(#假值列表“)


Tags: 数据端口name程序错误学生jensenmichael
2条回答

标准方法是:

if condition:
    print(message)

其中condition(或not condition)和message应根据您的具体需要进行调整。你知道吗

您不需要创建3个数据帧。您只需创建dataframe,然后根据您的条件执行选择。你知道吗

import pandas as pd
import re

data = """0    s123456           Michael Andersen            7            7             4
1    s123789           Bettina Petersen           12           10            10
2    s123468             Thomas Nielsen           -3            7             2
3    s123579               Marie Hansen           10           12            12
4    s123579               Marie Hansen           10           12            12
5    s127848            Andreas Nielsen            2            2             2
6    s120799           Mads Westergaard           12           12            10
7    s123456           Michael Andersen            7            7             4
8    S184507  Andreas Døssing Mortensen            2            2             4
9    S129834             Jonas Jonassen            0           -3             4
10   S123481             Milad Mohammed           12           10             7
11   S128310                Abdul Jihad           10            4             7
12   S125493             Søren Sørensen            0            7             7
13   S128363                        123            4            7            10
14   S127463              Jensen Jensen            5            2            10
15   S120987                 Jeff Bezos           12           12            12"""

#Make the data frame
data = [re.split(r"\s{2,}", line)[1:] for line in data.splitlines()]
df = pd.DataFrame(data, columns=['StudentID', 'Name', 'Assignment1', 'Assignment2', 'Assignment3'])

#print the duplicates
print(f'###Duplicate studentIDs###')
print(df[df['StudentID'].duplicated()])

#print invalid grades
valid_grades = ('-3', '0', '2', '4', '7', '10', '12')
print(f'###Invalid grades###')
print(df[
    (df['Assignment1'].isin(valid_grades) == False) |
    (df['Assignment2'].isin(valid_grades) == False) |
    (df['Assignment3'].isin(valid_grades) == False)
])

输出

###Duplicate studentIDs###
  StudentID              Name Assignment1 Assignment2 Assignment3
4   s123579      Marie Hansen          10          12          12
7   s123456  Michael Andersen           7           7           4
###Invalid grades###
   StudentID           Name Assignment1 Assignment2 Assignment3
14   S127463  Jensen Jensen           5           2          10

相关问题 更多 >

    热门问题