首页 > 解决方案 > UVa 问题 458 - The Decoder python runtime error

问题描述

所以,这就是问题https://i.stack.imgur.com/2qaVn.png

这是我的代码。

while True:
    try:
        code = input()
    except EOFError:
        break
    if len(code) == 0:
        continue
    decode = ''
    for i in code:
        decode += chr(ord(i) - 7)

    print(decode)

示例输入:

[opz'pz'h'x|p{l'zpunsl'wyvislt5
PM'`V\'HYL'YLHKPUN'[OPZ3'`V\'TH`IL'OH]L'MV\UK'[OL'ZVS\[PVU5
Rllw'jvkpun'huk'{yhpupun'{opz'rpuk'vm'wyvisltz5'P['JV\SK'IL'YLHSS`'L_JP[PUN5
Zv555
TH`'[OL'JVKL'IL'^P[O'`V\5

示例输出:

This is a quite single problem.
IF YOU ARE READING THIS, YOU MAYBE HAVE FOUND THE SOLUTION.
Keep coding and training this kind of problems. IT COULD BE REALLY EXCITING.
So...
MAY THE CODE BE WITH YOU.

它工作得很好,但是当我提交给 UVa 时,它总是给我运行时错误。

我在这里做错了什么?

谢谢你。

标签: pythonalgorithm

解决方案


我可以在另一个裁判平台上获得 AC 并且运行速度非常快,但是onliejudge.org上的“错误答案” 。

    import sys
    s = {k:k-7 for k in range(128)}
    s[10]=10
    s[13]=13
    sys.stdout.write(sys.stdin.read().translate(s))

但就像你的回答一样,这种方法会因为“超出时间限制”而陷入“UnicodeError”。

    import sys
    while 1:
        s = sys.stdin.read(1)
        if s :
            try:
                print(chr(ord(s)-7),end='')
            except UnicodeError:
                while 1:pass
        else:
            break

所以我认为你的代码也陷入了“UnicodeError”运行时错误。


推荐阅读