2011-09-05 2 views
5

나는이 그림을 파이썬으로 만들고 싶습니다! 슬프게도 위의 그림과 같이 점의 오른쪽 숫자로 구성 무언가를 가져 오는 것 같습니다별표 (영문) 파이썬에서

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

, 그러나 그 점 별표 각각은 서로 이격로 구분됩니다 :

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

나는이 입력 , 전체적으로 정당화 된 권리 라기보다는.

아무도 내가 원하는 것을 얻을 수있는 방법에 대해 영리한 마음을 가지고 있습니까? %* 연산자가 동일한 우선 순위 그룹을 가지고 있기 때문에

+8

Obelix는 어떨까요? – Tsar

+3

3 편집 및 없음 Asterix-> Asterisk =) – Tsar

답변

13
'%10s' %'*'*x 

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

로서 해석되고 왼쪽에서 오른쪽 [docs]. 이 같은 괄호를 추가해야합니다

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

하면, 그것은 잠시 루프보다 for 루프를 사용하는 것이 더 관용적 간주 번호의 범위을 반복하십시오. 이처럼 :

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

for x in range(0, 10) Java 또는

+0

최고! 사람! 이 얼마나 좋은 대답인가! 고마워요 - 완벽하게 작동합니다! - 이것은 내가 본 첫 번째 답변이므로 고맙다고 말하면서 물론 다른 모든 사람들에게 감사드립니다! 물론 내 깊은 감사! – Azz

+0

"Voila!", 프랑스어 "There are it!", "Presto!"또는 "Woot, doggie"라고 생각합니다. – PaulMcG

+0

http://en.wikipedia.org/wiki/Wallah_(Arabic) –

8

문자열 객체가 정확히이 일에 대한 rjustljust 방법이있다 C.에 for(int x = 0; x < 10; x++)에 해당합니다. 대안

>>> n = 10 
>>> for i in xrange(1,n+1): 
... print (i*'*').rjust(n) 
... 
     * 
     ** 
     *** 
     **** 
    ***** 
    ****** 
    ******* 
    ******** 
********* 
********** 
또는

:

>>> for i in reversed(xrange(n)): 
... print (i*' ').ljust(n, '*') 
... 
     * 
     ** 
     *** 
     **** 
    ***** 
    ****** 
    ******* 
    ******** 
********* 
********** 

내 두 번째 예는 충전 * 문자로 인쇄 문자로서 스페이스 문자를 사용하고.

ljust 또는 rjust의 인수는 터미널 너비입니다. 나는 종종 당신이 디버깅 출력물을 가지고있을 때 표제와 함께 섹션을 분리 할 때 이것을 사용합니다. print '--Spam!'.ljust(80, '-'). 이 때문에 연산자 우선 순위의

1
print '\n'.join(' ' * (10 - i) + '*' * i for i in range(10)) 
2

는이 하나를 사용하여 사진 10 별표로 끝나는대로

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

은, 정확히하려면 다음이 필요합니다.

for i in range(1, 11): 
    print "%10s"%('*' *i)