Melanie Ann Tarr - 3 years ago 366

Python Question

I am experimenting with Hilbert curves written in Python in an Xcode IDE. The code listing is:

`# 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()

I am getting the following error from Xcode:

File "/Users/248239j/Desktop/hilbert/hilbertexe.py", line 12

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

^

SyntaxError: invalid syntax

Would anyone have an alternative to that code line. Thanks in advance. I started using python today.

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

That's a problem with different Python-Versions.

Seems like this code was written for Python2.x but you're trying to run it with Python3.x.

The solution is to either use 2to3 to change these small differences automatically:

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

Or manually replace the occurences of `print <string>`

with `print(<string>)`

(see Print is a function for more explanations).

Or just install Python2.x and run the code with that Python-Version

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

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**