当运行以下代码时,这是一个简单的问题,Python解释器很奇怪:
n = input()
for i in range(n):
testcase = raw_input()
#print i
print testcase[2:(int(testcase[0])+1)]+testcase[(int(testcase[0])+2):]
问题在于获取n个字符串并从中删除单个字符。 例如,给定字符串“4 PYTHON”,程序应输出“PYTON”。 代码运行正常,但是如果我取出注释标记,则语句print i会使解释器在解析时给出意外的EOF。有没有想过为什么会这样?
编辑:我正在使用Python 2.5,Windows 32位。答案 0 :(得分:4)
你确定问题是print i声明吗?代码作为 当我取消注释该语句并运行它时。但是,如果我忘了 输入第一个input()调用的值,然后立即输入“4 PYTHON” 蝙蝠,然后我得到:
"SyntaxError: unexpected EOF while parsing"
这是因为input()不仅仅是存储您输入的文本,还包括 在它上面运行eval()。并且“4 PYTHON”不是有效的python代码。
答案 1 :(得分:1)
这对我也有用,试一试......
n = raw_input()
n = int(n)
for i in range(n):
testcase = raw_input()
print i
print testcase[2:(int(testcase[0])+1)]+testcase[(int(testcase[0])+2):]
请注意n = int(n)
PS:您可以继续在第一行使用n = input()
;我更喜欢raw_input。
答案 2 :(得分:1)
我是另一个无论是否有评论的印刷声明都没有问题的人。第一行的输入函数没有问题,只要我给它一些Python可以评估的东西。因此,最可能的解释是,当您收到该错误时,您输入的内容不是有效的Python表达式。
你总是得到那个错误吗?你可以发布交互式会话的成绩单,完成堆栈跟踪吗?