返回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的主要内容,如果未能解决你的问题,请参考以下文章

pythonfor循环

pythonfor循环break可以出现多次

素数python for循环

在 Python FOR 循环中获取循环计数

python中for循环的用法

在运行时更改 Python for 循环范围(上限)