将字符串与数字相乘导致“TypeError: 不能用非整数类型的'str'乘以序列”

20 投票
5 回答
76297 浏览
提问于 2025-04-16 03:06

我需要一个由特定字符重复组成的字符串。在Python控制台中,如果我输入:

n = '0'*8

那么n就会被赋值为一个包含8个零的字符串,这正是我所期待的。

但是,如果我在一个Python程序(.py文件)中做同样的事情,程序就会因为出现错误而中止,错误信息是
can't multiply sequence by non-int of type 'str'

有没有办法解决这个问题?

5 个回答

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'
>>>
9

我敢打赌你在用 raw_input() 来读取一个值,这样会把它当成字符串处理。你应该用 input() 来读取这个值,这样它会被当成整数,而不是字符串。

39

你会遇到这个错误是因为在你的程序中,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'

撰写回答