Multiplying a string with a number results in “TypeError: can't multiply sequence by non-int of type 'str'”

后端 未结 5 847
Happy的楠姐
Happy的楠姐 2020-12-03 03:16

I need a string consisting of a repetition of a particular character. At the Python console, if I type:

n = \'0\'*8

then n gets

相关标签:
5条回答
  • 2020-12-03 03:54

    I could bet you're using raw_input() to read the value which multiplies the string. You should use input() instead to read the value as an integer, not a string.

    0 讨论(0)
  • 2020-12-03 03:59

    If you want the result to be a list of strings instead of a single one, you can always use this:

    list(('0',) * 8)
    

    And you can get:

    ['0', '0', '0', '0', '0', '0', '0', '0']
    
    0 讨论(0)
  • 2020-12-03 04:05

    That line of code works fine from a .py executed here, using python 2.6.5, you must be executing the script with a different python version.

    0 讨论(0)
  • 2020-12-03 04:08

    The reason that you are getting the error message is that you're trying to use multiplying operator on non integer value.

    The simplest thing that will do the job is this:

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

    Or do the function for that:

    >>> def multiply_anything(sth, size):
    ...     return ''.join(["%s" % sth for s in xrange(size)])
    ...
    >>> multiply_anything(0,8)
    '00000000'
    >>>
    
    0 讨论(0)
  • 2020-12-03 04:10

    You get that error because - in your program - the 8 is actually a string, too.

    >>> '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'
    
    0 讨论(0)
提交回复
热议问题