Python - 连接

时间:2016-10-09 10:33:59

标签: python

我对以下代码感到疯狂,这些代码应该非常简单但不起作用:/

class Triangulo_String:

    _string = ''
    _iteraciones = 0
    _string_a_repetir = ''

    def __init__(self, string_a_repetir, iteraciones):
        self._string_a_repetir = string_a_repetir
        self._iteraciones = iteraciones

    def concatenar(self):
        for i in range(0, self._iteraciones, 1):
            self._string = self._string_a_repetir + self._string + '\n'

我正在初始化_iteraciones3_string_a_repetir'*'

输出只是:

***

当我期待:

*
**
***

我已经调试了它,在进行连接时,它只是连接self._string_a_repetir,而不是_string和换行符。

这么容易让我发疯._。

1 个答案:

答案 0 :(得分:3)

相关位在此部分:

var obj = {...};
var deferred = $.Deferred();
deferred.done(function(){ /*.. asynchronous function here ..*/ });

for (var key in obj) {
  if (!obj[key]["something"]) {
    deferred.resolve();
  }
}

让我们逐个完成迭代:

for i in range(0, self._iteraciones, 1):
    self._string = self._string_a_repetir + self._string + '\n'

正如你所看到的,这完全有望发生,因为你不会每行多次重复这个角色。而且你也错误地将前一个字符串与新字符串连接起来(将它放在当前行的文本和换行符之间)。

您正在寻找的是这样的:

# Initially
_string = ''
_string_a_repetir = '*'
_iteraciones = 3

# i = 0
_string = _string_a_repetir + _string  + '\n'
        = '*'               + ''       + '\n'
        = '*\n'

# i = 1
_string = _string_a_repetir + _string  + '\n'
        = '*'               + '*\n'    + '\n'
        = '**\n\n'

# i = 2
_string = _string_a_repetir + _string  + '\n'
        = '*'               + '**\n\n' + '\n'
        = '***\n\n\n'

for i in range(0, self._iteraciones, 1): self._string = self._string + (self._string_a_repetir * (i + 1)) + '\n' 可以在string * number次重复string

总的来说,你不应该那样使用那些类成员:

number

这会将这些成员创建为 class 变量,这些变量在其所有实例之间共享。如果您从不更改类成员,这不是直接问题,但以后可能会引起混淆。您应该初始化class Triangulo_String: _string = '' _iteraciones = 0 _string_a_repetir = '' 中的所有实例属性:

__init__