Converting for loops to while loops in python
Solution 1:
It's like this:
def printTTriangle(height):
row = 1
while row < height+1:
col = 1
while col < row+1:
print 'T',
col += 1
print
row += 1
Here's how I did it. For example, let's convert this line:
for row in range(1, height+1):
First step: create an iteration variable and initialize it in the starting value of the range:
row = 1
Second step: transform the ending value of the range into the loop condition, and careful with the indexes:
while row < height+1:
Finally, don't forget to advance the loop incrementing the iteration variable:
row += 1
Putting it all together:
row = 1
while row < height+1:
row += 1
Solution 2:
You can simplify it and just use one while loop:
def printTTriangle(height):
row = 1
while row <= height:
print 'T '*row
row += 1
AND if you are not obsessed with while loops, here is a one liner:
def printTTriangle(height):
print "\n".join(['T '*row for row in range(1, height+1)])
Solution 3:
You can get rid of the inner loop with string multiplication operator (*
) :
def printTTriangle(height):
j = 1
while j <= height:
print 'T' * j + '\n '
j += 1