我正在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'。有没有其他人有这个问题?我不明白该做什么我试过添加空格等但没有任何帮助。
答案 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
语句无论如何都是不好的做法,即使它确实有效。正如我的评论中所述,按索引进行迭代通常是一个坏主意,并且可能会被删除,但这需要更深入地了解手头的操作。