2016-02-06 3 views
1

Я экспериментирую с кривыми Гильберта, написанными на 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) ^ SyntaxError: недействительный синтаксис

У кого-нибудь есть альтернатива этой кодовой строке. Заранее спасибо. Я начал использовать python сегодня.

+1

Возможная Дубликат [ошибка синтаксиса на печать с Python 3] (http://stackoverflow.com/questions/826948/ синтаксис-error-on-print-with-python-3) – tripleee

ответ

2

Это проблема с различными Python-версий.
Кажется, что этот код был написан для Python2.x, но вы пытаетесь запустить его с помощью Python3.x.

Решения либо использование 2to3 автоматически изменять эти небольшие различия:

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

Или вручную заменить вхождения print <string> с print(<string>) (см Print is a function для более объяснений).

Или просто установить Python2.x и запустить код с этой Python-версии

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

Большое вам спасибо –

2

print, в Python 3, функция - вы должны окружить аргументы в скобки:

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

Большое вам спасибо –

Смежные вопросы