2014-09-04 35 views
-1

我試圖從for循環中的字符串中刪除空格。我能夠得到它的工作增加一個空間,但刪除不起作用。Python - =字符串中的空格

這裏是我的代碼:

letterHeight = 10 

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

nLetter() 

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

回答

5

字符串不支持減法;哪一個空間應該被刪除?用切片來代替:

vertical = vertical[:-1] 

這通過創建從所有字符一個新的字符串除了最後一個刪除最後一個字符:

>>> "abcd"[:-1] 
'abc' 
+0

真棒。完美的作品。很高興知道字符串不支持減法。這是什麼原因,並且在其他語言中是一樣的?謝謝。 – Nicolas 2014-09-04 16:24:15

+2

@Nicolas:序列類型(列表,元組,字符串)都不支持減法,因爲它對於刪除哪個元素是不明確的。大多數語言都是這樣處理的;追加很容易,因爲它只是在最後添加元素。 – 2014-09-04 16:25:57

1

你不能用字符串使用-=操作。如果你需要從一個字符串(不一定是空格)刪除最後一個字符,試試這個:

vertical = vertical[:-1] 
1

或者,你可以嘗試字符串格式化做到這一點!

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() 

還是略勝一籌:

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

@MartijnPieters感謝您的更新。 – 2014-09-04 16:31:42