我运行下面的代码并得到语法错误。不知道出了什么问题。
for x in range(1,11):
print '{0:2d} {1:3d}{2:4d}'.format(x), (x*x), (x*x*x)
你需要右括号和左括号format
:
for x in range(1,11):
print '{0:2d} {1:3d}{2:4d}'.format(x, x*x, x*x*x)
你的代码
print '{0:2d} {1:3d}{2:4d}'.format(x), (x*x), (x*x*x)
实际上相当于:
print ('{0:2d} {1:3d}{2:4d}'.format(x)), (x*x), (x*x*x)
因此,您只将一个值传递给格式字符串(即 just x
),而它需要 3。
>>> '{}{}{}'.format(1)
Traceback (most recent call last):
File "<pyshell#75>", line 1, in <module>
'{}{}{}'.format(1)
IndexError: tuple index out of range
如果该格式字符串只有一个格式说明符,那么您的代码就可以正常工作。这是有效的,因为逗号分隔的项目在它们之间打印有空格:
>>> print '{:04d}'.format(1), 2, 3
0001 2 3
它必须是IndexError
:
>>> for x in range(1,11):
... print '{0:2d} {1:3d}{2:4d}'.format(x), (x*x), (x*x*x)
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
IndexError: tuple index out of range
谢谢@Martijn Pieters,用 py3 或from __future__ import print_function
.
>>> from __future__ import print_function
>>> for x in range(1,11):
... print '{0:2d} {1:3d}{2:4d}'.format(x, x*x, x*x*x)
File "<stdin>", line 2
print '{0:2d} {1:3d}{2:4d}'.format(x, x*x, x*x*x)
^
SyntaxError: invalid syntax
您错误地传递了参数,请尝试(如果 print 是一个函数):
>>> for x in range(1,11):
... print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x))
...
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
这就是你想要的:
print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)
format() 期望 3 个值与您格式化字符串的方式