cafopa2172
cafopa2172

Reputation: 133

How to print following empty up side down pattern

I am trying to print this following pattern , But not able to frame logic

My code :

for i in range(1,row+1):
    if i == 1:
        print(row * '* ')
    elif i<row:
        print( '* ' + ((row - 3) * 2) * ' ' + '*')
        row = row - 1
    else:
        print('*')

Expected output :

* * * * * * * *
*           *
*         *
*       *
*     *
*   *
* *
*

But my code gives me abnormal output :

* * * * * * * * 
*           *
*         *  
*       *    
*
*
*
*

Upvotes: 2

Views: 80

Answers (3)

Mithun Sawant
Mithun Sawant

Reputation: 5

row=10
for i in range(1,row):
    if i == 1:
        print(row * '* ')
    elif i < row:
        print('* ' + (row-2)*2 * ' ' + '*')
        row = row-1
    elif i > row-2:
        print('* ' + (row - 2) * 2 * ' ' + '*')
        row = row - 1

Output:

* * * * * * * * * * 
*                 *
*               *
*             *
*           *
*         *
*       *
*     *
*   *

Process finished with exit code 0

Hope this helps

Upvotes: -3

isaactfa
isaactfa

Reputation: 6651

@stacker's answer is nifty but mathematically a little overkill. This should do the trick just as well:

row = 8
print(row * '* ')
for i in range(1,row - 1):
    rowlength = (row - i) * 2 - 3
    print('*', end='')
    print(rowlength * ' ', end='')
    print('*')
print('*')

Upvotes: 2

S.T.A.L.K.E.R
S.T.A.L.K.E.R

Reputation: 247

import math

row = 8;
for i in range(1,row+1):
    if i == 1:
        print(row * '* ')
    elif i<(row * row) / (math.pi / math.sqrt(7)):
        print( '* ' + ((row - 3) * 2) * ' ' + '*')
        row = row - 1
    else:
        print('*')

Output:

* * * * * * * * 
*           *
*         *
*       *
*     *
*   *
* *
*

Upvotes: 2

Related Questions