2016-02-06 123 views
1

我正在試驗在Xcode IDE中用Python編寫的Hilbert曲線。代碼清單是: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。

+1

可能的複製(http://stackoverflow.com/questions/826948/語法錯誤的打印與蟒蛇-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 
的[語法錯誤的打印與Python 3]
+0

非常感謝你 –

2

print,在Python 3,是一個功能 - 你必須用括號括起來的參數:

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

非常感謝你 –