python输出中不需要的空行

6bc51xsx  于 2023-04-10  发布在  Python
关注(0)|答案(2)|浏览(141)

对于类,我应该写一个代码,输出星号的形式为数字8。我不明白我的代码有什么问题,它增加了一个新的行在开始,但在这个挑战。
因此,预期的输出应该是这样的:

*****
*   *
*****
*   *
*****

我的代码看起来像这样:

for i in range(0,5):
    print()
    for j in range(0,5):
        if i%2==0:
            print("*",end='')        
        else:
            if j==0 or j==4:                
                print("*",end='')
            else:
                print(" ",end='')

但是我的输出在开始处添加了一个新行(因此它看起来像是带有额外新行的预期输出),然后按预期打印代码的其余部分。
请帮帮忙。

pepwfjgg

pepwfjgg1#

print()调用应该在循环的底部,而不是顶部,这样就不会在开始时打印一个空行。

for i in range(0,5):
    for j in range(0,5):
        if i%2==0:
            print("*",end='')        
        else:
            if j==0 or j==4:                
                print("*",end='')
            else:
                print(" ",end='')
    print()

你也可以不使用嵌套循环,因为只有两个字符串要打印,它们不需要动态创建。

for i in range(5):
    if i % 2 == 0:
        print("*****")
    else:
        print("*   *")
mkshixfv

mkshixfv2#

您从一个空行开始,不应该

您可以更改这一行:

print()

致:

if i>0:
    print()

因此,正确缩进后的代码变为:

for i in range(0,5):
    if i>0:
        print()
    for j in range(0,5):
        if i%2==0:
            print("*",end='')        
        elif j==0 or j==4:                
            print("*",end='')
        else:
            print(" ",end='')

或者,您可以将()的打印移动到for i循环的末尾,这样它就不再需要在if中了。这是一种更传统的方法,因为它以换行符结束输出。

for i in range(0,5):
    for j in range(0,5):
        if i%2==0:
            print("*",end='')        
        elif j==0 or j==4:                
            print("*",end='')
        else:
            print(" ",end='')
    print() # <----- No `if`, if you place this `print()` here instead.

相关问题