首页 > 解决方案 > 如何在同一行上打印两个矩形

问题描述

我被分配了一项任务,我设法编写了一个函数来根据给定的输入打印一个矩形。

int1 = int(input("Give me a number: "))

def rectangle(n, m) :
             
    for i in range(1, n+1) :
        for j in range(1, m+1) :
            if ( i == 1 or i == n or
                j == 1 or j == m ) :
                print("*", end="") 
            else :
                print(" ", end="")           
         
        print()
 
rows = int1 
columns = (int1*2)+0
rectangle(rows, columns) 

该功能的工作原理如下:

input:
Give me a number: 3

output:
******
*    *
******

input: 
Give me a number: 4

output:
******** 
*      *
*      *
********

我正在尝试打印,而不是在给出输入时仅打印一个矩形,而是在同一行上打印两个,中间有一个空格,就像这样;

input: 
Give me a number: 4

output:
******** ******** 
*      * *      *
*      * *      *
******** ********

任何建议或指导都会很棒,我知道我可以迭代 for 循环以在一个函数内的同一行上扩展两个正方形,并错过中间和中间 + 1 列以使其看起来像两个正方形但不成功。

标签: python

解决方案


如果您让矩形函数返回字符串,而不是打印它,这是最简单的!

def rectangle(n, m):
    r = ["*" * m]
    for _ in range(n-2):
        r.append("*" + " " * (m-2) + "*")
    r.append("*" * m)
    return "\n".join(r)

>>> print(rectangle(4, 5))
*****
*   *
*   *
*****

现在,您可以通过拆分成线并处理线来重用单个矩形函数来并排获取矩形:

def xrectangles(n, m, x):
    r = rectangle(n, m).splitlines()
    return "\n".join("  ".join([row] * x) for row in r)
    
>>> print(xrectangles(4, 5, 3))
*****  *****  *****
*   *  *   *  *   *
*   *  *   *  *   *
*****  *****  *****

>>> print(xrectangles(3, 3, 7))
***  ***  ***  ***  ***  ***  ***
* *  * *  * *  * *  * *  * *  * *
***  ***  ***  ***  ***  ***  ***

推荐阅读