做了一下CSP2023-3月的题目,第三题LDAP,能拿到前百分之四十的数据分应该是挺简单的,本人很菜,非计算机专业,用python编了一下。我的思路很简单,就是普通的if else条件语句,在网上看到别人用栈操作,但我觉得只要做对前百分之四十不需要那么复杂,用if else应该是可以的。它给的测试用例我输出正确了(但这不算什么我知道),可是提交上去居然是零分,也就是一个都不对。能不能帮我指正一下,我这样写代码有什么问题?好让我见识一下考CSP需要达到什么水平。
P1P2为源代码,下面也有,可以直接复制,后面几张图是题目。
n = int(input())
user = []
for i in range(n):
one_info = dict()
dn, atri_n, *atri = map(int, input().split())
one_info['DN'] = dn
one_info['atri_name'] = [atri[j] for j in range(0, len(atri)-1, 2)]
one_info['atri_num'] = [atri[j] for j in range(1, len(atri), 2)]
user.append(one_info)
m = int(input())
express = []
for i in range(m):
express.append(input())
def simple(exp):
correspond = []
if exp[1] == ':':
for info in user:
if int(exp[0]) in info['atri_name']:
idx = info['atri_name'].index(int(exp[0]))
if info['atri_num'][idx] == int(exp[2]):
correspond.append(info['DN'])
elif exp[1] == '~':
for info in user:
if int(exp[0]) in info['atri_name']:
idx = info['atri_name'].index((int(exp[0])))
if info['atri_num'][idx] != int(exp[2]):
correspond.append(info['DN'])
return correspond
def muti(exp):
corre1 = simple(exp[2:5])
corre2 = simple(exp[7:10])
if exp[0] == '&':
correspond = [i for i in corre1 if i in corre2]
elif exp[0] == '|':
correspond = corre1 + corre2
return correspond
for exp in express:
if len(exp) == 3:
co_user = simple(exp)
print(*co_user, sep=' ')
if len(exp) == 11:
co_user = muti(exp)
print(*co_user, sep=' ')
以下答案由GPT-4.0Plus大模型与博主A努力中.......共同编写: