Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.2k views
in Technique[技术] by (71.8m points)

string - Asterisk art in python

I would like to produce this picture in python!

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

I entered this:

x=1
while x<10:
 print '%10s'    %'*'*x
 x=x+1

Which sadly seems to produce something composed of the right number of dots as the picture above, but each of those dot asterisks are separated by spaced apart from one another, rather than justified right as a whole.

Anybody have a clever mind on how I might achieve what I want?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
 '%10s'    %'*'*x

is being parsed as

('%10s' % '*') * x

because the % and * operators have the same precedence and group left-to-right[docs]. You need to add parentheses, like this:

x = 1
while x < 10:
    print '%10s' % ('*' * x)
    x = x + 1

If you want to loop through a range of numbers, it's considered more idiomatic to use a for loop than a while loop. Like this:

for x in range(1, 10):
    print '%10s' % ('*' * x)

for x in range(0, 10) is equivalent to for(int x = 0; x < 10; x++) in Java or C.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...