返回 for 循环 python

Returning in for loops python

我已经尝试了一段时间了,但我似乎无法做到正确。 我是一名初级程序员,必须为学校做作业。该程序应要求用户提供一个数字并根据此数字打印菱形。 现在我已经让它工作正常了..但是我在我的主要文件之外有打印语句。我如何将它放入我的 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")。

假设您粘贴的缩进是正确的(并且 y 变量是在全局范围内定义的),您当前的代码不会生成菱形,只有最后一个 [=13] =] 在 loop() 函数内缩进在 for 循环内。

鉴于此,您可能想要研究的是 generator functions with 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