如何打印带有数字的矩形?

时间:2019-05-02 01:08:50

标签: python

我需要帮助制作一个数字矩形。宽度和长度是用户输入的任何内容,但是idk如何生成输出。它需要看起来像这样: 宽度= 6,长度= 4

654321
654321
654321
654321

这就是我所拥有的:

def drawnumberrectangle():
    height = getinteger("Enter a height: ")
    width = getinteger("Enter a width: ")
    i = 0
    j = 0
    while i < height:
        while j < width:
            print()
            j = j + 1
        print("")
        j = 0
        i = i + 1

我需要打印功能中的东西

7 个答案:

答案 0 :(得分:1)

请注意,对于每一行,数字从width到1。

''.join([str(x) for x in range(width, 0, -1)])

说明

  • range(width, 0, -1)生成从width到1的数字迭代。

  • [str(x) for x in range(width, 0, -1)]将上一个范围转换为字符串列表。

  • ''.join([str(x) for x in range(width, 0, -1)])将该列表的字符串连接为单个字符串。

还要注意,此行重复length次。

for i in range(length):
    print(''.join([str(i) for i in range(width, 0, -1)]))

这是您的代码。

答案 1 :(得分:0)

尝试使用计数器

def drawnumberrectangle():
    height = getinteger("Enter a height: ")
    width = getinteger("Enter a width: ")
    i = 0
    j = 0
    while i < height:
        while j < width:
            print(width-j)
            j = j + 1
        print("")
        j = 0
        i = i + 1

答案 2 :(得分:0)

height = input("Enter a height: ")
width = input("Enter a width: ")
i = int(height)
while i > 0:
    j=int(width)
    while j > 0:
        print(j, end="")
        j = j - 1
    print("")
    i = i - 1

答案 3 :(得分:0)

print(width - j, end="")应该这样做。这样做是在每次迭代中打印出width - j,所以它将从宽度开始(因为j = 0开始),然后下降到一个(因为在最后一次迭代中width-1)。

end=""告诉print(...)在末尾添加一个空字符串,而不是一个新的行字符,以便它在同一行中打印下一个字符。您的print("")打印完数字后,将打印出新行。

def drawnumberrectangle():
    height = getinteger("Enter a height: ")
    width = getinteger("Enter a width: ")
    i = 0
    j = 0
    while i < height:
        while j < width:
            print(width - j, end="")
            j = j + 1
        print("")
        j = 0
        i = i + 1

答案 4 :(得分:0)

如果单独打印每个数字,则每个数字后都会出现一个换行符。相反,您可以构造一个行字符串,然后打印该字符串:

def drawnumberrectangle():
    height = getinteger("Enter a height: ")
    width = getinteger("Enter a width: ")
    for i in range(height):
        line = ''
        for j in range(width):
            line += '{}'.format(width - j)
        print(line)

我也将其更改为使用for in循环和range,这更像Python。

答案 5 :(得分:0)

欢迎使用python。在这里,我们有一些时髦的结构可以节省很多输入。如您所见,与某些其他语言相比,这可以用更少的行来完成。

然后range()函数将为您提供整数列表。在设置高度的行中,我传递了我们需要多少行。在宽度上,您可以看到我指定了range(1, width +1)。这是因为range()默认从0开始,但是我们实际上需要打印"1"

下一个技巧是列表理解[str(w) for w in range(1, width+1)]。这将创建一个字符列表。但是由于我们要打印它们,所以我将它们转换为字符串。这是因为''.join()会将它们全部分组为一个不错的字符串。

最后一个窍门是您看到[::-1]的一部分,它占据了列表的一部分。有三个参数,开始,停止和步骤,以冒号分隔。空白表示从头开始,在结尾处结束。 -1的步骤意味着将所有操作都向后进行。

def rectangle(width, height):

    for h in range(height):
        print(''.join([str(w) for w in range(1, width+1)][::-1]))

rectangle(6, 4)
# 654321
# 654321
# 654321
# 654321

答案 6 :(得分:0)

这看起来像是一个作业问题,所以我不会付出太多。我建议您从计数循环(for循环)开始,因为这将简化您的代码,并使用join()方法

height = getinteger("Enter a height: ")
width = getinteger("Enter a width: ")

for i in range(height):
    print(''.join([str(j) for j in range(width,1,-1)]))

为解释这些构造,join()方法将使用作为分隔符的字符串调用的参数连接起来,例如如果我们想用逗号分隔数字,则可以使用','.join(numberList)。如果列表理解,您将看到的第二件事-这将给定条件创建一个列表。在这种情况下,我们想要一个从a到b的所有数字的列表,步长为-1(递减),因此我们使用range(6,1,-1)并将这些数字作为字符串,所以我们做一个a使用str(j)

进行类型转换