如何使用python制作形状(对角线,倒三角形)?

时间:2017-05-03 06:07:18

标签: python shapes

使用此起点:

size_in = input('Please enter the size: ')
size = int(size_in)
char = input('Please enter the drawing character: ')
print('')
row = 1

我已经想出如何制作一个正方形:

while row <= size:
    col = 1
    while col <= size:
        print(char, '', end = '')
        col = col + 1
    print('')
    row = row + 1
print('')

还有一个三角形:

row = 1
while row <= size:
    col = 1
    while col <= row:
        print (char, '', end = '') 
        col = col + 1
    print ('') 
    row = row + 1
print ('')

但我无法找出对角线

X
 X
  X
   X
    X

或反向三角形

xxxxx
 xxxx
  xxx
   xx
    x

我为反向三角形提出的最好的是:

row = 1
while row <= size:
    col = size - row + 1
    while col <= row:
        print (' ',)
        col = col + 1
    col = 0
    while col <= size-row:
        print (char, '', end = '') 
        col = col + 1
    row = row + 1
    print ('')
print ('')

但即使这样也不安静,它只是翻转并且有额外的空间。我无法弄清楚如何做到这些。

1 个答案:

答案 0 :(得分:2)

您不需要使用while循环和许多额外操作。只需使用range功能并正确使用startendstep参数。

In [26]: for i in range(10, 0, -1):
             print((' ' * (10-i)) + (i * '+'))
   ....:     
++++++++++
 +++++++++
  ++++++++
   +++++++
    ++++++
     +++++
      ++++
       +++
        ++
         +

In [27]: 

In [27]: for i in range(10, 0, -1):
             print((' ' * (10-i)) + '+')
   ....:     
+
 +
  +
   +
    +
     +
      +
       +
        +
         +

然而,从算法的角度来看,打印此类形状所需的所有内容都是从最高级别开始倒计时,然后以相反的方式(从最低级别到最高级别)向每行的前导添加空间。