Reputation: 47
count = 1
for i in range(10):
for j in range(0, i):
print(count, end='')
count = count +1
print()
input()
I am writing a program that should have the output that looks like this.
1
22
333
4444
55555
666666
7777777
88888888
999999999
With the above code I am pretty close, but the way my count is working it just literally counts up and up. I just need help getting it to only count to 9 but display like above. Thanks.
Upvotes: 3
Views: 79060
Reputation: 1850
This can be your one line code to problem
print(''.join([str(x)*x+ '\n' for x in range(1,10)]))
Upvotes: 0
Reputation: 1
I realised that the problem is solved but here's how you wanted your code to look like.
count=0
for i in range(10):
for j in range(0, i):
print (count, end='')
count +=1
print()
i think @Dannnno answer is shorter and straight to the point :)
Upvotes: 0
Reputation: 1
What you are trying to do involves a mathematical concept called repunit numbers
you could also do it as follows:
for i in range(1,n):
print (int(i*((10**i)-1)/9))
Upvotes: 0
Reputation: 21
This is one line solution. A little bit long:
print ('\n'.join([str(i)*i for i in range(1,10)]))
Upvotes: 1
Reputation: 165
count = 1
for i in range(9):
for j in range (-1, i):
print (count, end = '')
count = count + 1
print (" ")
Upvotes: 0
Reputation: 11
The simple mistake in your code is the placement of count = count + 1. It should be placed after the second for loop block. I have made a simple change in your own code to obtain the output you want.
from __future__ import print_function
count = 0
for i in range(10):
for j in range(0, i):
print(count,end='')
count = count +1
print()
This will give the output you want with the code you wrote. :)
Upvotes: 1
Reputation: 152
Others have suggested some interesting solutions but this can also be done mathematically using a simple observation. Notice that:
1 - 1*1
22 - 2*11
333 - 3*111
4444 - 4*1111
and so on ....
We can have a general formula for producing 1,11,111,1111,... at every iteration. Observe that:
1 = 9/9 = (10 - 1)/9 = (10^1 - 1)/9
11 = 99/9 = (100 - 1)/9 = (10^2 - 1)/9
111 = 999/9 = (1000 - 1)/9 = (10^3 - 1)/9
......
that is we have (10^i - 1)/9 for the ith iteration.
Now it is simple enough to implement. We will multiply i with the above formula in each iteration. Hence the overall formula is:
i*(10^i - 1)/9 (for every ith iteration). Here's the python code:
for i in xrange(1,10):
print i*(10**i-1)/9
Hope this helps.
Upvotes: -1
Reputation: 127
for i in range(1,10):
for j in range(0,i):
print i,
print "\n"
Upvotes: 2
Reputation: 2496
You're incrementing count
in the inner loop which is why you keep getting larger numbers before you want to
You could just do this.
>>> for i in range(1, 10):
print str(i) * i
1
22
333
4444
55555
666666
7777777
88888888
999999999
or if you want the nested loop for some reason
from __future__ import print_function
for i in range(1, 10):
for j in range(i):
print(i, end='')
print()
Upvotes: 10
Reputation: 91
"""2. 111 222 333 printing"""
for l in range (1,10):
for k in range(l):
print(l,end='')
print()
Upvotes: 0
Reputation: 58
This works in both python2 and python3:
for i in range(10):
print(str(i) * i)
Upvotes: 2
Reputation: 7576
Change print(count, end='')
to print(i + 1, end='')
and remove count
. Just make sure you understand why it works.
Upvotes: 0