2

*s を使用して矢じりを出力しようとしています。これまでのところ、私のコードは次のようになります。

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

print head(input())

それは機能しますが、たとえば 11 を入力すると、次のように出力されます。

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

しかし、私はそれを次のように印刷したい:

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

矢印が少ないのですが、やり方がわかりません。

4

5 に答える 5

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))
于 2013-10-28T11:21:05.840 に答える
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
于 2013-10-28T10:57:43.420 に答える