如何摆脱“的使用”;完";只针对最后一个元素的in循环(python)?

如何摆脱“的使用”;完";只针对最后一个元素的in循环(python)?,python,python-3.x,Python,Python 3.x,通过使用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="

通过使用
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()
输出:

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

实际上,您可以使用
sep
,而不是使用
end
,它只在听起来像您想要的元素之间分隔。这甚至会减少一点循环

您必须将打印更改为:
print(*范围(m,4),sep='-')

空格(
“”
)循环也不是必需的,可以是单个的
打印
,因此您的整个代码可以如下所示:

m=4
n=1
对于范围(1,4)内的i:
打印(“*abs(5-n),结束=”)
n+=2
打印(*范围(3,3-i,-1),*范围(m,4),sep='-')
m-=1
也可以只使用循环变量
i
,避免维护
m
n
。因此,代码可以简化为:

m=4
对于范围(1,m)内的i:
打印(“*abs(5-i*2+1),结束=”)
打印(*范围(3,3-i,-1),*范围(m-i+1,m),sep='-')
其中:

3
3-2-3
3-2-1-2-3
最后,要使其更合理,请将
m
作为要打印的范围,并使其完全通用以允许任何
m
,您可以执行以下操作:

m=4
对于范围(1,m+1)内的i:
打印(“*(m*2-i*2),结束=”)
打印(*范围(m,m-i,-1),*范围(m-i+2,m+1),sep='-')
现在将打印到
4

4
4-3-4
4-3-2-3-4
4-3-2-1-2-3-4
欢迎来到SO

工作进展不错!在这里,在我的解决方案中,我试图将责任划分为更小的任务

  • 生成要打印的号码
  • 以设计格式打印这些文件
  • 输出

                       3
                   3-2-3
               3-2-1-2-3
    
    注意:Python Pros可以进一步简化此解决方案,但我试图保持足够简单,以便您理解


    您可以探索python字符串对象的功能,如
    center
    join
    和列表理解、len函数,以提高您的python技能。

    我不知道为什么我的问题被否决了。即使它是合理的权利!!。你们为什么不鼓励初学者提问?我认为这里只适合专业人士。有时它会警告我三天后再问一个问题!!有时它会显示“你的问题已经结束了”。你们为什么会这样啊。你可能是一个伟大的程序员,但我们也能做到,先生。如果你不理解我的问题,最好询问更多关于这个问题的信息。但对于初学者来说,结束或否决一个问题并不总是好的。希望你能理解我的问题。。。
                       3
                   3-2-3
               3-2-1-2-3