-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)

したがって、フォーマット文字列に値を 1 つだけ (つまり、 のみx) 渡しているのに、3 が期待されます。

>>> '{}{}{}'.format(1)

Traceback (most recent call last):
  File "<pyshell#75>", line 1, in <module>
    '{}{}{}'.format(1)
IndexError: tuple index out of range

その書式文字列に書式指定子が 1 つしかない場合、コードは正しく機能します。これは、コンマで区切られたアイテムがそれらの間にスペースを入れて印刷されるため機能します。

>>> 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 に答える