2013-10-28 5 views
2

* s를 사용하여 화살촉을 인쇄하려고합니다. 지금까지 내 코드는 이렇게 보입니다.별을 사용하여 화살촉 인쇄하기

def head(n): 
    while n > 0: 
     print n * "*" 
     n = n - 1 

print head(input()) 

예를 들어 내가 11을 입력하면이 있지만, 그것은이 인쇄 작품 :

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

하지만 그것은 다음과 같이 인쇄 할 : 작은 화살표가 있습니다

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

을, 그러나 나는 그것을 어떻게하는지 이해할 수 없다.

+0

문자열의 center() 메소드를 사용하십시오. –

답변

1
def printHead(n): 
    for l in range(1,n): 
     print " "*(n-l)+"*"*(1 if l==1 else 2*l-1) 

각 행에는 level-1 공백이 있습니다. 그런 다음 첫 번째 레벨 시작 인 경우 그렇지 않으면 2*level-1입니다. n은 행 번호 1 -

>>> printHead(6) 
    * 
    *** 
    ***** 
    ******* 
********* 
2

사용 문자열 서식 :

def head(size): 
    n=1 
    while n < size+1: 
     stars = n * "*" 
     print '{:^30}'.format(stars) 
     n += 2 

는 30 개 문자 폭 넓은 분야에 별표를 중심합니다.

+2

너는 이상한 너비를 사용해야한다 – Joe

+0

['ast'] (http://docs.python.org/2/library/ast.html)은 내장되어있어 이름을 바꾸는 것을 고려해야한다. –

0
  1. 라인 별의 수는 2N과 동일하다.
  2. 선 또는 별을 언급하는지 여부는 분명하지 않으므로이 함수에서 매개 변수 "n"을 호출하지 않습니다.
  3. center 함수를 사용하여 지정된 너비를 기준으로 문자열을 공백으로 묶을 수 있습니다. 화살표가 가장 긴 줄의 중심에 오도록 두 개의 변수가 필요합니다. 하나는 현재 줄을 추적하고 다른 줄은 가장 큰 줄을 기억합니다.
  4. 화살표가 아래쪽이 아닌 위로 향하게하려면 반대 방향으로 시연하십시오.

내가이 당신을 위해 일해야한다고 생각 :

def head(total_lines): 
    for current_line in range(1, total_lines + 1): 
    print ((2 * current_line - 1) * "*").center(2 * total_lines - 1) 
+1

유효하지 않은 Python. 범위 (1, n + 1,2)에'for n '을 사용하십시오. –

+0

@ MarkTolonen 감사합니다. 파이썬을 작성하고 적절하게 답변했습니다! –

0
def head(n): 
    total = 2 * n - 1 
    s = '' 
    for i in xrange(1, n + 1): 
     k = 2 * i - 1 
     s += ' ' * ((total - k)/2) + '*' * k + '\n' 
    return s 
4

그것은 당신을 얼마나 많은 라인의 관점에서 생각하는 약간의 간단한 기능을하게이 원하는 :

def head(lines): 
    for n in range(1,lines*2,2):   # count 1,3,5... 
     print(('*'*n).center(lines*2-1)) 

출력 :

>>> head(5) 
    *  
    *** 
    ***** 
******* 
********* 

다음은 조금 덜 분명한 가변 길이 형식을 사용하는 다른 방법입니다.

def head(lines): 
    for n in range(1,lines*2,2): 
     print('{:^{}}'.format('*'*n,lines*2-1)) 
+0

+1 문자열 형식에 대한 내 연결 접근 방식을 이겼어! – HennyH

관련 문제