返回for循环python
Posted
技术标签:
【中文标题】返回for循环python【英文标题】:Returning in for loops python 【发布时间】:2015-12-30 20:25:21 【问题描述】:我已经尝试了一段时间,但我似乎无法做到正确。 我是一名初级程序员,必须为学校做作业。程序应该要求用户输入一个数字并根据这个数字打印一个菱形。 现在我已经让它工作正常了.. 但我在我的主要之外有打印语句。我如何在我的 main 中得到这个?
我的代码:
def loop(start, eind, step, ei):
for a in range (start, eind, step):
for b in range(a):
print(" ", end="")
for c in range(ei+1, a, -1):
print(a, end="")
for d in range(a, ei):
print(a, end="")
print("")
def main():
print("Welcome! :) ")
loop(y,0,-1,y)
loop(2,y+1,1,y)
希望大家能帮帮我! 顺便说一句,我有更多的代码用于这个程序,但这不相关(比如向用户询问“y”)。
【问题讨论】:
但我在我的主目录之外有打印语句。我如何在我的 main 中得到这个? 你是什么意思? 【参考方案1】:假设您粘贴的缩进是正确的(并且y
变量是在全局范围内定义的),您当前的代码不会生成菱形,只有在@987654326 中的最后一个print("")
才会正确生成@ 函数在 for
循环内缩进。
鉴于此,您可能想要查看的是 generator functions 和 yield
statements 。示例 -
def loop(start, eind, step, ei):
for a in range (start, eind, step):
for b in range(a):
yield " "
for c in range(ei+1, a, -1):
yield a
for d in range(a, ei):
yield a
yield '\n'
def main():
print("Welcome! :) ")
for x in loop(y,0,-1,y):
print(x,end="")
for x in loop(2,y+1,1,y):
print(x,end="")
这假定y
变量是在全局范围内定义的。
演示 -
>>> def loop(start, eind, step, ei):
... for a in range (start, eind, step):
... for b in range(a):
... yield " "
... for c in range(ei+1, a, -1):
... yield a
... for d in range(a, ei):
... yield a
... yield '\n'
...
>>> def main():
... print("Welcome! :) ")
... y = 5
... for x in loop(y,0,-1,y):
... print(x,end="")
... for x in loop(2,y+1,1,y):
... print(x,end="")
...
...
>>> main()
Welcome! :)
5
444
33333
2222222
111111111
2222222
33333
444
5
【讨论】:
您可能会研究 string format() 方法以使打印语句更易于遵循和扩展。 Here's an example for a similar question about printing pyramids. 虽然这可能无关紧要,因为这个问题似乎旨在了解循环。 谢谢!我要多练习一下。以上是关于返回for循环python的主要内容,如果未能解决你的问题,请参考以下文章