玄学事件同样的输出一个对一个错
查看原帖
玄学事件同样的输出一个对一个错
1170071
Operation0701楼主2023/11/12 17:18

为什么不同的代码在一个测试点上输出一样的结果,一个对一个错。 测试点是:QWERTYUIOPLKJHGFDSAZXCVBNM QWERTYUIOPLKJHGFDSAZXCVBNN HIJACK

代码一是对的:

d = {}
a = list(input().strip())
b = list(input().strip())
c = list(input().strip())
def code(a,b):
    for i in range(len(a)):
        if b[i] in d.values() and a[i] != [key for key,value in d.items() if value == b[i]][0]:
            return 'Failed'
        if a[i] not in d:
            d[a[i]] = b[i]
        else:
            if d[a[i]] != b[i]:
                return 'Failed'
            else:
                continue
    if len(d) != 26:
        return 'Failed'
if code(a,b) == 'Failed':
    print('Failed')
else:
    for j in range(len(c)):
        c[j] = d[c[j]]
    print(''.join(c))

代码二是错的:

d1 = {}
d2 = {}
a = list(input().strip())
b = list(input().strip())
c = list(input().strip())

def code(a,b):
    for i in range(len(a)):
        d1[a[i]],d2[b[i]] = b[i],a[i]
    if len(d1) != 26 or len(d2) != 26:
    #if len(d1) != 26 or len(d1) != len(d2):等价写法
        return 'Failed'

if code(a,b) == 'Failed':
    print('Failed')
else:
    for j in range(len(c)):
        c[j] = d1[c[j]]
    print(''.join(c))

在测试点3两个输出的都是Failed,结果第一个对第二个错?玄学事件。

2023/11/12 17:18
加载中...