簡體   English   中英

如何擺脫在循環(python)中僅對最后一個元素使用“end”?

[英]How to get rid of the use of “end” in loops(python) for only the last element?

通過使用end="-"我得到了這個循環。 我想刪除最后一個元素'-'

  m=4
  n=1
  for i in range(1,4):
      for x in range(5,n,-1):
          print(" ",end="")
      n+=2  
      for y in range(3,3-i,-1):
          print(y,end="-")
      for z in range(m,4):
          print(z,end="-")
      m-=1  
      print()

Output:

           3-
       3-2-3-
    3-2-1-2-3-

除了使用end ,您實際上可以使用sep ,它僅在聽起來像您想要的元素之間進行分隔。 這甚至會減少你的循環。

您必須將打印更改為: print(*range(m, 4), sep='-')

空格( ' ' ) 循環也不是必需的,可以是單個print ,因此您的整個代碼可以如下所示:

m = 4
n = 1
for i in range(1, 4):
    print(" " * abs(5-n), end='')
    n += 2
    print(*range(3, 3-i, -1), *range(m, 4), sep='-')
    m -= 1

也可以只使用循環變量i而避免維護mn 所以代碼可以簡化為:

m = 4
for i in range(1, m):
    print(" " * abs(5-i*2+1), end='')
    print(*range(3, 3-i, -1), *range(m-i+1, m), sep='-')

這使:

    3
  3-2-3
3-2-1-2-3

最后,通過將m作為打印范圍使其更合理,並使其完全通用以允許您可以執行任何m

m = 4
for i in range(1, m+1):
    print(" " * (m*2-i*2), end='')
    print(*range(m, m-i, -1), *range(m-i+2, m+1), sep='-')

現在最多可以打印4

      4
    4-3-4
  4-3-2-3-4
4-3-2-1-2-3-4

歡迎來到 SO!

工作進展順利,來了。 在我的解決方案中,我試圖將職責划分為更小的任務。

  1. 生成要打印的號碼
  2. 以設計格式打印這些
m=4
n=1
max_line_length = 20

def special_print(items):
    # convert each number to string
    str_items = [str(each) for each in items]
    # prepare output string
    output_string = '-'.join(str_items)
    prefix = ' ' * (max_line_length - len(output_string))
    print(prefix + output_string)
    # try
    # print(output_string.center(max_line_length))

for i in range(1,4):
    items = []
    n+=2  
    for y in range(3,3-i,-1):
        items.append(y)
    for z in range(m,4):
        items.append(z)
    m-=1
    # print(items)
    special_print(items)

Output

                   3
               3-2-3
           3-2-1-2-3

注意:此解決方案可以通過 Python Pros 進一步簡化,但我盡量保持簡單,以便您理解。

您可以探索 python 字符串對象功能,如centerjoin和列表理解,len function 以提高您的 Python 技能。

暫無
暫無

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

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