Estoy tratando de eliminar un espacio de una cadena dentro de un bucle for. Pude hacerlo funcionar para agregar un espacio, pero eliminarlo no funciona.

Aquí está mi código:

letterHeight = 10

def nLetter():
    x = 0
    diagonal = ""
    vertical = "          "
    while x < letterHeight:
        print "*"+diagonal+"*"+vertical+"*"
        diagonal += " "
        vertical -= " "
        x += 1

nLetter()

Error: TypeError: unsupported operand type(s) for -=: 'str' and 'str'

-1
Nicolas 4 sep. 2014 a las 20:15

3 respuestas

La mejor respuesta

Las cadenas no admiten sustracción; ¿Cuál de los espacios debe eliminarse? Utilice el corte en su lugar:

vertical = vertical[:-1]

Esto elimina el último carácter al crear una nueva cadena de todos los caracteres excepto el último:

>>> "abcd"[:-1]
'abc'
5
Martijn Pieters 4 sep. 2014 a las 16:16

¡Alternativamente, puede intentar el formateo de cadenas para hacer esto!

letterHeight = 10

def nLetter():
    diagonal = 1
    vertical = 10
    for _ in range(letterHeight):
        print("*{2:>{0}}{2:>{1}}".format(diagonal, vertical, "*"))
        diagonal += 1
        vertical -= 1

nLetter()

O un poco mejor:

def nLetter():
    for mod in range(letterHeight):
        print("*{2:>{0}}{2:>{1}}".format(1+mod, 10-mod, "*"))
1
Martijn Pieters 4 sep. 2014 a las 16:33

No puede usar el operador -= con cadenas. Si necesita eliminar el último carácter de una cadena (no necesariamente un espacio), intente esto:

vertical = vertical[:-1]
1
Óscar López 4 sep. 2014 a las 16:17