返回python循环

2024-04-19 20:56:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经试了一段时间了,但我好像做不好。 我是一名初级程序员,必须为学校做一项作业。程序应该要求用户输入一个数字,并根据这个数字打印一个菱形。 现在我已经很好地工作了。。但我在我的主要工作之外有打印报表。我怎么才能把这个放进我的主脑呢?你知道吗

我的代码:

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”)。你知道吗


Tags: 代码用户in程序loopfordefstep
1条回答
网友
1楼 · 发布于 2024-04-19 20:56:22

假设粘贴的缩进是正确的(并且y变量是在全局范围内定义的),则当前代码不会生成菱形,只有在loop()函数中的最后一个print("")缩进到for循环中时才会正确生成。你知道吗

考虑到这一点,您可能需要研究的是generator functions^{} 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

相关问题 更多 >