5

我是一个初学者,正在尝试自己学习 Python。我一直在编写一些基本的形状练习,到目前为止,我有以下代码来制作对角线。

size = input('Please enter the size: ')
chr  = raw_input('Please enter the drawing character: ')

row = 1
while row <= size:

    col = 1
    while col < row:
        print ' ', 
        col = col + 1
    print chr

    row = row + 1
print ''

我得到这个输出:

X
 X
  X
   X

我很想得到一些关于如何把它变成这样的三角形的帮助......

X X X X
  X X X
    X X
      X

任何关于如何使字符出现以产生三角形输出所需的循环的解释将不胜感激。

4

3 回答 3

5

你可以做:

>>> for i in xrange(4):
...     print '  ' * i + 'X ' * (4 - i)
...
X X X X
  X X X
    X X
      X

的值i从 0 到 3(使用xrange),它打印字符串' '(两个空格)i的次数和打印'X '的总(4 - i)次数。这意味着它将根据需要打印倒三角形。

于 2013-11-05T14:56:12.053 回答
3

最简单的解决方法是打印字符print chr,而不是空格print ' ',

要垂直反转结果,只需简单地改变条件,从while col < row:while col < (size - row + 1):就足够了。最后,要水平反转它,添加一个打印空格的循环:

size = input('Please enter the size: ')
chr  = raw_input('Please enter the drawing character: ')

row = 1
while row <= size:

    col = 1
    while col < row:
        print ' ',
        col = col + 1

    col = 1
    while col < (size - row + 1):
        print chr, 
        col = col + 1
    print chr

    row = row + 1
print ''

最后,您可以稍微简化一下:

size = input('Please enter the size: ')
chr  = raw_input('Please enter the drawing character: ')

row = 1
while row <= size:

    col = 1
    while col < size:
        if col < row:
            print ' ',
        else:
            print chr,
        col = col + 1
    print chr

    row = row + 1
print ''

结果:

Please enter the size: 4
Please enter the drawing character: x
x x x x
  x x x
    x x
      x

当然,您可以通过Simeon Visser 的回答来使这变得非常简单。

于 2013-11-05T14:57:58.513 回答
2

我之前写了一些做形状的代码,它比你可能需要的更详细,但这里是:

>>> def make_triangle(size, siblings=1, step=1, char='*'): 
    return '\n'.join([' '.join(line) for line in [[char * (i-(step*sib)) + ' ' * (((size-(step*sib))-(i-(step*sib)))) for sib in xrange(siblings)] for i in xrange(1, size+1)]])

制作一些三角形:

>>> print make_triangle(4, char='X') # standing
X   
XX  
XXX 
XXXX
>>> print make_triangle(4, char='X')[::-1] # hanging (reversed)
XXXX
 XXX
  XX
   X

一些额外的功能:

>>> print make_triangle(6,3,2)
*                 
**              
***    *       
****   **     
*****  ***  * 
****** **** **
于 2013-11-05T14:58:34.577 回答