【问题标题】:Converting for loops to while loops in python在python中将for循环转换为while循环
【发布时间】:2013-09-24 21:19:50
【问题描述】:

我正在努力寻找一种有效的方法将这些 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

感谢大家的帮助!

【问题讨论】:

  • 为什么要转换成while? for 比 while 更好
  • 你也可以在字符串上使用*print 'T' * 4 # TTTT
  • 也可以用xrange代替range,效率可能会稍微高一些

标签: python loops for-loop while-loop iteration


【解决方案1】:

是这样的:

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

【讨论】:

    【解决方案2】:

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

    def printTTriangle(height):
     j = 1
     while j <= height:
         print 'T' * j + '\n '
         j += 1
    

    【讨论】:

      【解决方案3】:

      你可以简化它,只使用一个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)])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-22
        • 2017-04-26
        • 2018-08-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多