程序,创建三角形和正方形

时间:2018-11-07 17:32:20

标签: python shapes

我已经开始学习编程,我需要创建程序,用户可以在其中输入所需的行数,然后程序必须根据用户提供的信息打印两种不同的形状。形状必须像

  

Blockquote

                         # # # # #        *
                         #       #        * *
                         #       #  AND   * * *
                         #       #        * * * *
                         # # # # #        * * * * *

我设法制作了三角形,但我不知道如何创建内部为空的正方形。我只把它填满了。 谁能帮我修改我的代码?

    userInput = input("Enter amount of row's wanted: ")
def shape(userInput, drawCharacter):
    n = 0
    while n < int(userInput):
        n += 1
        if drawCharacter == "*":
            print(n*drawCharacter.rjust(3))
        elif drawCharacter == "#":
            print(int(userInput)*drawCharacter.rjust(3))

shape(userInput, "*")

print("|__________________|\n")

shape(userInput, "#")

3 个答案:

答案 0 :(得分:1)

使用numpy数组来避免在生成矩阵时出现循环的方法:

import numpy

n = 5 # or userinput, has to be >= 2
mat = np.full((n,n), '#') # a matrix of #s
mat[1:-1, 1:-1] = np.full((n-2, n-2), ' ') # make the center of the matrix ' '
print('\n'.join([' '.join(e) for e in mat]))

结果:

# # # # #
#       #
#       #
#       #
# # # # #

答案 1 :(得分:0)

您的盒子基本上由以下部分组成:

  1. 顶行和底行:print (width * '#')
  2. 中心行:print ('#{}#'.format(' ' * (width - 2)))

作为练习,您只需要弄清楚循环。.;)

答案 2 :(得分:0)

如果这是您第一次接触编程(任何语言),我建议您尝试使用 嵌套循环 (其中将模拟一个 2d数组 ,或者基本上是一个 矩阵 ),尝试找出该数组的索引矩阵不打印而仅打印边缘。 通过这种方法,您将更好地深入了解此任务提出的问题以及如何解决它。祝你好运!