簡體   English   中英

無法從圖案中移除多余的星星

[英]Not able to remove extra star from pattern

我有我正在嘗試打印的圖案

預期 output:

1 * 2 * 3 * 4 * 5 
1 * 2 * 3 * 4 
1 * 2 * 3 
1 * 2 
1 

我已經寫了一個代碼,但沒有得到如何添加這個檢查,所以最后一個星不應該被打印[參考上面預期的 output]

n=5
l = [  str(i) + ' *'   for i in range(1,n+1) ]
for j in range(1,n+1):
  print(' '.join(l))
  del l[-1]

我的 output:

1 * 2 * 3 * 4 * 5 *
1 * 2 * 3 * 4 *
1 * 2 * 3 *
1 * 2 *
1 *

您可以使用 print 函數的 sep= 參數來避免將數字轉換為字符串並操作列表:

n=5
for j in range(n):
    print(*range(1,n-j+1),sep=' * ')
  • j 從 0 迭代到 n-1, range(1,n-j+1)將生成一個逐漸變短的數字列表:
    • 當 j 為 0 時:[1,2,3,4,5]因為 (n-j+1 = 6)
    • 當 j 為 1 時:[1,2,3,4]因為 (n-j+1 = 5)
    • ...
    • 當 j 為 4 時:[1]因為 (n-j+1 = 2)
  • *range(1,n-j+1)解壓縮值以將它們作為 arguments 傳遞給打印 function,就好像您已經完成了 print(1,2,3,..., sep=' * ')。
  • print function 的sep=' * '參數將使用提供的字符串來分隔打印值而不是單個空格(這是默認設置)

可能這可以幫助你

只需簡單地使用slice -> [:-1]它將為您打印 output

代碼:

n=5
l = [  str(i) + ' *'   for i in range(1,n+1) ]
for j in range(1,n+1):
  print(' '.join(l)[:-1])
  del l[-1]

Output:

1 * 2 * 3 * 4 * 5 
1 * 2 * 3 * 4 
1 * 2 * 3 
1 * 2 
1

這是我得到的:

n=5
l = [ str(i)  for i in range(1,n+1) ]
for _ in range(1,n+1):
  print(' * '.join(l))
  del l[-1:]

我基本上只是刪除了列表中的星號並將其用作分隔符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM