修复代码以制作三角形

时间:2013-11-05 14:51:56

标签: python shapes

我是初学者,并试图自己学习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

关于如何使字符显示以使三角形输出变为必要的循环的任何解释将是值得赞赏的。

3 个答案:

答案 0 :(得分: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)次。这意味着它会根据需要打印倒三角形。

答案 1 :(得分: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's answer看看这个非常简单。

答案 2 :(得分: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)
*                 
**              
***    *       
****   **     
*****  ***  * 
****** **** **