UVa 458 - The Decoder Python运行时错误求助及C++对比疑问
UVa 458 Python代码运行时错误的解决方法
问题根源
UVa在线评测的Python环境默认是Python 2,你的代码使用了Python 3的input()函数。在Python 2中,input()会将输入内容当作Python表达式解析,一旦输入包含空格、特殊字符或未定义的标识符,就会抛出语法错误,直接导致运行时错误。而你的C++代码使用cin >> s,只是单纯读取连续的非空白字符作为字符串,不会对内容做任何解析,因此不会出现这类问题。
改进后的Python代码
将input()替换为Python 2中用于读取整行输入的raw_input()即可解决问题:
while True: try: a = raw_input() except EOFError: break print(''.join([chr(ord(i) - 7) for i in a]))
为什么C++无需考虑该细节
C++的cin >> s是基于字符流的读取操作,它只会从输入中提取连续的非空白字符(空格、换行、制表符等视为分隔符),直接存储为字符串,不会对读取到的内容做任何语法解析或求值操作。无论输入内容是什么,只要是合法的字符,都会被直接处理,因此不存在类似Python 2中input()的解析问题。
内容的提问来源于stack exchange,提问作者Daniel Lin
相关产品推荐
相关产品推荐

