-2

我运行下面的代码并得到语法错误。不知道出了什么问题。

for x in range(1,11):
    print '{0:2d} {1:3d}{2:4d}'.format(x), (x*x), (x*x*x)
4

3 回答 3

1

你需要右括号和左括号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
于 2013-11-07T14:03:37.963 回答
1

它必须是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
于 2013-11-07T14:03:52.793 回答
0

这就是你想要的:

print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)

format() 期望 3 个值与您格式化字符串的方式

于 2013-11-07T14:05:43.700 回答