如何摆脱“的使用”;完";只针对最后一个元素的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