以下のコードを実行したところ、構文エラーが発生しました。何が悪いのかわからない。
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)
したがって、フォーマット文字列に値を 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
それはでなければなりません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つの値を期待しています