Python中奇怪的程序行为

时间:2009-06-11 18:59:44

标签: python

当运行以下代码时,这是一个简单的问题,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位。

3 个答案:

答案 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表达式。

总是得到那个错误吗?你可以发布交互式会话的成绩单,完成堆栈跟踪吗?