我需要帮助制作一个数字矩形。宽度和长度是用户输入的任何内容,但是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
我需要打印功能中的东西
答案 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)