Concatenación y multiplicación de cadenas

El significado de un operador puede cambiar en función de los tipos de datos de los valores que le acompañan. Por ejemplo, + es el operador de suma cuando opera sobre dos enteros o valores de punto flotante. Sin embargo, cuando + se utiliza sobre dos valores de cadena, une las cadenas como operador de concatenación de cadenas. Introduzca lo siguiente en el shell interactivo:

>>> 'Alice' + 'Bob'
'AliceBob'

La expresión se evalúa hasta un único y nuevo valor de cadena que combina el texto de las dos cadenas. Sin embargo, si intentas usar el operador + en una cadena y un valor entero, Python no sabrá cómo manejar esto, y mostrará un mensaje de error.

>>> 'Alice' + 42
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    'Alice' + 42
TypeError: can only concatenate str (not "int") to str

El mensaje de error can only concatenate str (not «int») to str significa que Python pensó que estabas intentando concatenar un entero a la cadena 'Alice'. Tu código tendrá que convertir explícitamente el entero en una cadena porque Python no puede hacerlo automáticamente.

El operador * multiplica dos valores enteros o de punto flotante. Pero cuando el operador * se utiliza sobre un valor de cadena y un valor entero, se convierte en el operador de multiplicación de cadenas. Introduzca una cadena multiplicada por un número en el shell interactivo para ver esto en acción.

>>> 'Alice' * 5
'AliceAliceAliceAliceAlice'

La expresión se evalúa hasta un único valor de cadena que repite la cadena original un número de veces igual al valor entero. La multiplición de cadenas es un truco útil, pero no se utiliza tan a menudo como la concatenación de cadenas.

El operador * sólo puede utilizarse con dos valores numéricos (para la multiplicación), o con un valor de cadena y un valor entero (para la replicación de cadenas). En caso contrario, Python sólo mostrará un mensaje de error, como el siguiente:

>>> 'Alice' * 'Bob'
Traceback (most recent call last):
  File "<pyshell#32>", line 1, in <module>
    'Alice' * 'Bob'
TypeError: can't multiply sequence by non-int of type 'str'
>>> 'Alice' * 5.0
Traceback (most recent call last):
  File "<pyshell#33>", line 1, in <module>
    'Alice' * 5.0
TypeError: can't multiply sequence by non-int of type 'float'

Tiene sentido que Python no entienda estas expresiones: no se pueden multiplicar dos palabras, y es difícil replicar una cadena arbitraria un número fraccionario de veces.

Original: https://automatetheboringstuff.com/2e

Deja una respuesta