Ответ 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'
Мне нужна строка, состоящая из повторения определенного символа. На консоли Python, если я набираю:
n = '0'*8
тогда n получает строку, состоящую из 8 нулей, чего я ожидаю.
Но, если у меня то же самое в программе Python (.py
file), программа прерывается с ошибкой, говорящей, что
can't multiply sequence by non-int of type 'str'
Любой способ исправить это?
Вы получаете эту ошибку, потому что - в вашей программе - 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'
Я мог бы поспорить, что вы используете raw_input()
для чтения значения, которое умножает строку. Вы должны использовать input()
вместо этого, чтобы прочитать значение как целое число, а не строку.
Причина, по которой вы получаете сообщение об ошибке, заключается в том, что вы пытаетесь использовать умножающий оператор на нецелое значение.
Самое простое, что сделает это:
>>> 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'
>>>
Если вы хотите, чтобы результат был списком строк вместо одного, вы всегда можете использовать это:
list(('0',) * 8)
И вы можете получить:
['0', '0', '0', '0', '0', '0', '0', '0']
Эта строка кода отлично работает с .py, выполняемой здесь, используя python 2.6.5, вы должны выполнить script с другой версией python.