我需要一个由重复特定字符组成的字符串。在Python控制台,如果我输入:
n = '0'*8
然后n被赋予一个由8个零组成的字符串,这就是我所期望的。
但是,如果我在Python程序(.py
文件)中有相同的内容,那么程序将中止,并显示错误说明
can't multiply sequence by non-int of type 'str'
有什么方法可以解决这个问题吗?
答案 0 :(得分:33)
你得到那个错误,因为 - 在你的程序中 - 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'
答案 1 :(得分:8)
我可以打赌你正在使用raw_input()
来读取乘以字符串的值。您应该使用input()
来将值读取为整数,而不是字符串。
答案 2 :(得分:2)
您收到错误消息的原因是您尝试在非整数值上使用乘法运算符。
最简单的工作就是:
>>> 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'
>>>
答案 3 :(得分:1)
如果您希望结果是字符串列表而不是单个字符串列表,您可以随时使用:
list(('0',) * 8)
你可以得到:
['0', '0', '0', '0', '0', '0', '0', '0']
答案 4 :(得分:-1)
这行代码在这里执行的.py工作正常,使用python 2.6.5,你必须用不同的python版本执行脚本。