Python 打印语法错误



我正在Xcode IDE中试验用Python编写的希尔伯特曲线。 代码清单为:

#  python code to run the hilbert curve pattern
#  from  http://www.fundza.com/algorithmic/space_filling/hilbert/basics/index.html
import sys, math
def hilbert(x0, y0, xi, xj, yi, yj, n):
    if n <= 0:
        X = x0 + (xi + yi)/2
        Y = y0 + (xj + yj)/2
        # Output the coordinates of the cv
        print '%s %s 0' % (X, Y)
    else:
        hilbert(x0,               y0,               yi/2, yj/2, xi/2, xj/2, n - 1)
        hilbert(x0 + xi/2,        y0 + xj/2,        xi/2, xj/2, yi/2, yj/2, n - 1)
        hilbert(x0 + xi/2 + yi/2, y0 + xj/2 + yj/2, xi/2, xj/2, yi/2, yj/2, n - 1)
        hilbert(x0 + xi/2 + yi,   y0 + xj/2 + yj,  -yi/2,-yj/2,-xi/2,-xj/2, n - 1)
def main():
    args = sys.stdin.readline()
    # Remain the loop until the renderer releases the helper...
    while args:
        arg = args.split()
        # Get the inputs
        pixels = float(arg[0])
        ctype = arg[1]
        reps = int(arg[2])
        width = float(arg[3])
        # Calculate the number of curve cv's
        cvs = int(math.pow(4, reps))
        # Begin the RenderMan curve statement
        print 'Basis "b-spline" 1 "b-spline" 1'
        print 'Curves "%s" [%s] "nonperiodic" "P" [' % (ctype, cvs)
        # Create the curve
        hilbert(0.0, 0.0, 1.0, 0.0, 0.0, 1.0, reps)
        # End the curve statement
        print '] "constantwidth" [%s]' % width
        # Tell the renderer we have finished
        sys.stdout.write('377')
        sys.stdout.flush()
        # read the next set of inputs
        args = sys.stdin.readline()
if __name__ == "__main__":
    main()

我从Xcode收到以下错误: 文件"/Users/248239j/Desktop/hilbert/hilbertexe.py",第 12 行 打印 '%s %s' % (X, Y) ^语法错误:语法无效

有人可以替代该代码行吗? 提前谢谢。 我今天开始使用python。

这是不同Python版本的问题。
似乎这段代码是为 Python2.x 编写的,但您正在尝试使用 Python3.x 运行它。

解决方案是使用 2to3 自动更改这些小差异:

2to3 /Users/248239j/Desktop/hilbert/hilbertexe.py

或者手动将print <string>的出现次数替换为print(<string>)(有关更多说明,请参阅打印是一个功能)。

或者只是安装 Python2.x 并使用该 Python 版本运行代码

python2 /Users/248239j/Desktop/hilbert/hilbertexe.py

print 在 Python 3 中是一个函数 - 你必须用括号将参数括起来:

print ('%s %s' % X, Y)

相关内容

  • 没有找到相关文章

最新更新