Подтвердить что ты не робот

Умножение строки с числом в python

Мне нужна строка, состоящая из повторения определенного символа. На консоли Python, если я набираю:

n = '0'*8

тогда n получает строку, состоящую из 8 нулей, чего я ожидаю.

Но, если у меня то же самое в программе Python (.py file), программа прерывается с ошибкой, говорящей, что can't multiply sequence by non-int of type 'str'

Любой способ исправить это?

4b9b3361

Ответ 1

Вы получаете эту ошибку, потому что - в вашей программе - 8 - это тоже строка.

>>> '0'*8
'00000000'
>>> '0'*'8' # note the ' around 8
(I spare you the traceback)
TypeError: can't multiply sequence by non-int of type 'str'

Ответ 2

Я мог бы поспорить, что вы используете raw_input() для чтения значения, которое умножает строку. Вы должны использовать input() вместо этого, чтобы прочитать значение как целое число, а не строку.

Ответ 3

Причина, по которой вы получаете сообщение об ошибке, заключается в том, что вы пытаетесь использовать умножающий оператор на нецелое значение.

Самое простое, что сделает это:

>>> n = ''.join(['0' for s in xrange(8)])
>>> n
'00000000'
>>>

Или выполните для этого функцию:

>>> def multiply_anything(sth, size):
...     return ''.join(["%s" % sth for s in xrange(size)])
...
>>> multiply_anything(0,8)
'00000000'
>>>

Ответ 4

Если вы хотите, чтобы результат был списком строк вместо одного, вы всегда можете использовать это:

list(('0',) * 8)

И вы можете получить:

['0', '0', '0', '0', '0', '0', '0', '0']

Ответ 5

Эта строка кода отлично работает с .py, выполняемой здесь, используя python 2.6.5, вы должны выполнить script с другой версией python.