Python CodeChef“;双字符串”;错误答案

Python CodeChef“;双字符串”;错误答案,python,Python,我的代码给出了错误的答案(根据法官的说法),我无法找出原因(第二个代码)。几天前,我刚开始在CodeChef上解决一组简单的问题 双字符串的前半部分等于后半部分(字符串长度为偶数)。问题陈述是找出通过删除和更改长度为N的回文的符号顺序可以获得的最大可能字符数 示例输入的第一行包含一个整数T——测试用例数。然后,T线跟随。每行由一个整数N组成,N是回文的长度 显然,如果回文长度为偶数,则双字符串的长度为N。如果回文长度为奇数,则输出应为N-1 这一点在我的一个公认解决方案中也很明显,如下所示: d

我的代码给出了错误的答案(根据法官的说法),我无法找出原因(第二个代码)。几天前,我刚开始在CodeChef上解决一组简单的问题

双字符串的前半部分等于后半部分(字符串长度为偶数)。问题陈述是找出通过删除和更改长度为N的回文的符号顺序可以获得的最大可能字符数

示例输入的第一行包含一个整数T——测试用例数。然后,T线跟随。每行由一个整数N组成,N是回文的长度

显然,如果回文长度为偶数,则双字符串的长度为N。如果回文长度为奇数,则输出应为N-1

这一点在我的一个公认解决方案中也很明显,如下所示:

def main():
    t = int(raw_input())
    for i in xrange(t):
        n = int(raw_input())
        if n%2:
            print (n-1)
        else:
            print n
if __name__ == "__main__":
    main() 
我无法理解的是,为什么我的另一个解决方案(如下)被拒绝,原因是答案错误,即使它做了同样的事情(根据我的说法)。在任何情况下,它是否会给出与上述代码不同的输出


您的奇数/偶数检查是错误的,因为
raw\u input()
可以返回由空格包围的数字

>>> n = raw_input()
12  
>>> n
'12  '
>>> n[-1] in '02468'
False
>>> int(n) % 2 == 0
True
正如您所看到的,接受的解决方案可以处理带有空格的输入,而您的解决方案不能

要修复它,请使用
n=raw\u input().strip()


请注意,在真正的Python编程中,您应该始终使用
int(n)%2
check,因为它简单、高效,不会接受错误的输入,例如
'abc22'

谢谢,添加
strip
让它接受我的解决方案。问题规范说“每一行由一个整数N组成——回文的长度。”这让我错误地认为它只有一个整数,没有任何额外的字符。
>>> n = raw_input()
12  
>>> n
'12  '
>>> n[-1] in '02468'
False
>>> int(n) % 2 == 0
True