[英]how do i print a rectangle with numbers?
我需要幫助制作一個數字矩形。 寬度和長度是用戶輸入的任何內容,但是idk如何生成輸出。 它需要看起來像這樣:width = 6,length = 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
我在打印功能中需要一些東西
請注意,對於每一行,數字從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)]))
這是您的代碼。
嘗試使用您的櫃台
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
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
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
如果您單獨打印每個數字,則每個數字后都會有一個換行符。 相反,您可以構造一個行字符串,然后打印該字符串:
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
,這更像Pythonic。
歡迎使用python。 在這里,我們有一些時髦的結構可以節省很多輸入。 如您所見,與某些其他語言相比,這可以用更少的行來完成。
然后range()
函數將為您提供整數列表。 在設置高度的行中,我傳遞了我們需要多少行。 在width中,可以看到我指定了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
這看起來像是一個作業問題,所以我不會付出太多。 我建議您從計數循環(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)
並將這些數字作為字符串,所以我們使用str(j)
進行類型轉換
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.