Я запустил код ниже и получил синтаксическую ошибку. Не знаю, что случилось.Печать красиво отформатированной таблицы с использованием (x, x * x, x * x * x)
for x in range(1,11):
print '{0:2d} {1:3d}{2:4d}'.format(x), (x*x), (x*x*x)
Я запустил код ниже и получил синтаксическую ошибку. Не знаю, что случилось.Печать красиво отформатированной таблицы с использованием (x, x * x, x * x * x)
for x in range(1,11):
print '{0:2d} {1:3d}{2:4d}'.format(x), (x*x), (x*x*x)
Должно быть 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 Питерс, получить его с 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
Вы неправильно передать аргументы, попробуйте (если печать является функцией):
>>> 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
Вы должны закрыть и открывающая скобка в 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)
Итак, вы передаете просто одно значение в строке формата (т.е. только 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
Это то, что вы хотите:
print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)
формат() ожидает 3 значения с пути ваш формат ваши строки
Я этого не делаю. Вместо этого я получаю «IndexError». –
Если вы действительно получаете «SyntaxError» здесь, то вы должны использовать Python 3 и 'print()' является функцией. То есть * отдельно * от 'IndexError' ваш код будет повышаться. –
Как рекомендация: [PrettyTable] (https://pypi.python.org/pypi/PrettyTable) – dorvak