3

我正在努力寻找一种有效的方法将这些for循环转换为一组工作的while循环。有什么建议么?我正在使用 2.7

def printTTriangle(height):
 for row in range(1,height+1):
    # print row T's
    for col in range(1,row+1):
        print 'T', 
    print

感谢大家的帮助!

4

3 回答 3

6

就像这样:

def printTTriangle(height):
    row = 1
    while row < height+1:
        col = 1
        while col < row+1:
            print 'T', 
            col += 1
        print
        row += 1

这就是我的做法。例如,让我们转换这一行:

for row in range(1, height+1):

第一步:创建一个迭代变量,并将其初始化为范围的起始值:

row = 1

第二步:将范围的结束值转换为循环条件,并注意索引:

while row < height+1:

最后,不要忘记推进循环递增迭代变量:

row += 1

把它们放在一起:

row = 1
while row < height+1:
    row += 1
于 2013-09-19T16:52:53.753 回答
2

您可以简化它并只使用一个 while 循环:

def printTTriangle(height):
    row = 1
    while row <= height:
        print 'T '*row
        row += 1

如果你不沉迷于 while 循环,这里有一个单行:

def printTTriangle(height):
    print "\n".join(['T '*row for row in range(1, height+1)])
于 2013-09-19T17:10:30.950 回答
1

您可以使用字符串乘法运算符 ( ) 摆脱内部循环*

def printTTriangle(height):
 j = 1
 while j <= height:
     print 'T' * j + '\n '
     j += 1
于 2013-09-19T17:07:50.737 回答