3
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.

enter image description here

Celius Stingher
  • 17,835
  • 6
  • 23
  • 53
iMaxPrime
  • 47
  • 1
  • 2
  • 5

13 Answers13

10

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()
Dan Oberlam
  • 2,435
  • 9
  • 36
  • 54
  • Yea this was per an assignment that required nested loops. So I needed it the second way. Thanks a bunch! – iMaxPrime Jul 06 '14 at 01:40
2

This works in both python2 and python3:

for i in range(10):
  print(str(i) * i)
darkcharl
  • 58
  • 6
2
for i in range(1,10):
    for j in range(0,i):
        print i,
print "\n"
Raghav Chadha
  • 117
  • 1
  • 5
1

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. :)

1

This is one line solution. A little bit long:

print ('\n'.join([str(i)*i for i in range(1,10)]))
0

Change print(count, end='') to print(i + 1, end='') and remove count. Just make sure you understand why it works.

David Ehrmann
  • 7,366
  • 2
  • 31
  • 40
0

Is this what you want:

for i in range(10):
    print(str(i) * i)
Zacrath
  • 521
  • 3
  • 8
0
"""2. 111 222 333 printing"""

for l in range (1,10):
    for k in range(l):
        print(l,end='')
print()
Harit Singh
  • 91
  • 1
  • 3
  • Please describe in short what is happening in your code for the benefit of other readers. – Jens Dec 11 '14 at 12:30
0

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))
Marian Nasry
  • 821
  • 9
  • 22
0

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 :)

Zian
  • 559
  • 4
  • 16
Tejumade
  • 1
  • 5
0
count = 1
for i in range(9):
    for j in range (-1, i):
        print (count, end = '')
    count = count + 1
    print (" ")
Arvind T
  • 145
  • 2
  • 2
  • 7
  • Please read this [how-to-answer](http://stackoverflow.com/help/how-to-answer) for providing a quality answer. Just post the code is not the best answer. – thewaywewere May 27 '17 at 17:28
0

This can be your one line code to problem

print(''.join([str(x)*x+ '\n' for x in range(1,10)]))
HamzaMushtaq
  • 1,660
  • 13
  • 13
-1

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.

noobcoder
  • 151
  • 2
  • 2
  • 13