【问题标题】:Python -= A Space from a StringPython -= 字符串中的空格
【发布时间】:2014-09-04 16:15:19
【问题描述】:

我正在尝试从 for 循环内的字符串中删除空格。我能够让它工作以添加空间,但删除不起作用。

这是我的代码:

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'

【问题讨论】:

    标签: python string subtraction


    【解决方案1】:

    字符串不支持减法;应该删除哪一个空格?改用切片:

    vertical = vertical[:-1]
    

    这通过从除最后一个字符之外的所有字符创建一个新字符串来删除最后一个字符:

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

    【讨论】:

    • 太棒了。完美运行。很高兴知道字符串不支持减法。这是什么原因,其他语言也一样吗?谢谢。
    • @Nicolas:序列类型(列表、元组、字符串)都不支持减法,因为对于要删除的元素不明确。大多数语言都是这样处理序列的。追加很容易,因为它只是在末尾添加元素。
    【解决方案2】:

    或者,您可以尝试使用字符串格式化来做到这一点!

    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, "*"))
    

    【讨论】:

      【解决方案3】:

      您不能将-= 运算符与字符串一起使用。如果您需要从字符串中删除最后一个字符(不一定是空格),请尝试以下操作:

      vertical = vertical[:-1]
      

      【讨论】:

        猜你喜欢
        • 2014-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-21
        • 2013-02-04
        • 2021-05-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多