【问题标题】:How to split rows while printing a pattern in Python如何在 Python 中打印模式时拆分行
【发布时间】:2026-01-16 03:25:01
【问题描述】:

输入:4、4 预期输出:

****
*..*
*..*
****

我的输出:

*
*
*
*
*
.
.
*
*
.
.
*
*
*
*
*

我的代码:

for i in range(1, 5):
         for j in range(1, 5):
            if i == 1 or i == 4 or j == 1 or j == 4:
                print("*")
            else:
                print(".")

【问题讨论】:

标签: python


【解决方案1】:

首先,您可以尝试这样做:

for i in range(1, 5):
    for j in range(1, 5):
        if i == 1 or i == 4 or j == 1 or j == 4:
            print"*",
        else:
            print".",
    print ''

',' 停止打印命令打印 \n

更新: 然后,当然,在完成的行之后添加换行符。

【讨论】:

  • Python 2.x 中的print '' 中不需要'' :) print 就足够了。
  • 谢谢!对我个人来说,这是一种“好风格”。但也许我把它改成更好的风格;)
【解决方案2】:

这是使用reduce的一行:

import sys
reduce(lambda x,z:reduce(lambda x,y : sys.stdout.write("*") if y == 1 or y == 4 or z==1 or z==4 else sys.stdout.write("."),range(1,5),None)or sys.stdout.write("\n"),range(1,5),None)

O/P:

****
*..*
*..*
****

也可以尝试使用循环:

for i in range(1, 5):
     for j in range(1,5):
             if i==1 or j==1 or i==4 or j==4:
                     sys.stdout.write("*")
             else:
                     sys.stdout.write(".")
     sys.stdout.write("\n")

O/P 相同

【讨论】:

  • Reduce 肯定比 for 循环花费更少的时间。所以这应该更好
  • 嘿,是的,这对我来说有点先进,但我通过网络查看了它,我对它的工作原理有一个模糊的概念。不过,谢谢
【解决方案3】:

您可以将输出存储在一个变量中,并且只在外部循环中打印它:

for i in range(1, 5):
     line = ""
     for j in range(1, 5):
        if i == 1 or i == 4 or j == 1 or j == 4:
            line = line + "*"
        else:
            line = line + "."
     print line

作为输出:

****
*..*
*..*
****

【讨论】:

  • 谢谢,很有帮助
最近更新 更多