python 打印语法错误
python print syntax error
我正在 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('7')
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。
print
,在 python 3 中,是一个函数 - 您必须用括号将参数括起来:
print ('%s %s' % X, Y)
这是不同 Python 版本的问题。
似乎这段代码是为 Python2.x 编写的,但您正在尝试 运行 它与 Python3.x。
解决方案是使用 2to3 自动更改这些小差异:
2to3 /Users/248239j/Desktop/hilbert/hilbertexe.py
或手动将出现的 print <string>
替换为 print(<string>)
(有关更多说明,请参阅 Print is a function)。
或者只安装 Python2.x 和 运行 具有 Python-Version
的代码
python2 /Users/248239j/Desktop/hilbert/hilbertexe.py
我正在 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('7')
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。
print
,在 python 3 中,是一个函数 - 您必须用括号将参数括起来:
print ('%s %s' % X, Y)
这是不同 Python 版本的问题。
似乎这段代码是为 Python2.x 编写的,但您正在尝试 运行 它与 Python3.x。
解决方案是使用 2to3 自动更改这些小差异:
2to3 /Users/248239j/Desktop/hilbert/hilbertexe.py
或手动将出现的 print <string>
替换为 print(<string>)
(有关更多说明,请参阅 Print is a function)。
或者只安装 Python2.x 和 运行 具有 Python-Version
的代码python2 /Users/248239j/Desktop/hilbert/hilbertexe.py