语法错误我从未见过

时间:2013-04-16 19:41:27

标签: python syntax

我正在python中编写一个系统发育树程序,我遇到了一个我以前没有遇到过的小问题,我已经调查过它并没有完全描述我遇到的问题,我从这里得到一个语法错误代码:

 for x in range(len(matrix)):
            # Print the label
            print(seq0[x-1], end == ' ') if x > 0 else print( ' ', end == '')

错误说:

 File "/home/brandon/OptimalAlignmentSensitive.py", line 206
print(seq0[x-1], end == ' ') if x > 0 else print( ' ', end == '')

并指向第二个print语句中的't'。有没有其他人有这个问题?我不明白该做什么我试过添加空格等但没有任何帮助。

2 个答案:

答案 0 :(得分:4)

尝试添加from __future__ import print_function,并在print(' ', end='')函数中使用单个'='编写print

答案 1 :(得分:1)

您的问题是使用三元运算符。您正在使用2.x,其中print是一个语句 - 而三元运算符只接受表达式。将其替换为if语句:

 for x in xrange(len(matrix)):
     if x > 0:
         print(seq0[x-1], end == ' ')
     else:
         print(' ', end == '')

这可能不会做你想要的。这将打印tuple,而您可能希望使用3.x的print()函数中的关键字参数。这在2.x中不存在,而是通过留下尾随逗号(没有括号来构造元组)来生成该函数。

 for x in range(len(matrix)):
     if x > 0:
         print seq0[x-1], 
     else:
         print " ",

通常,使用三元运算符来模拟单行if语句无论如何都是不好的做法,即使它确实有效。正如我的评论中所述,按索引进行迭代通常是一个坏主意,并且可能会被删除,但这需要更深入地了解手头的操作。