python - 如何在同一行上打印两个矩形
问题描述
我被分配了一项任务,我设法编写了一个函数来根据给定的输入打印一个矩形。
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 列以使其看起来像两个正方形但不成功。
解决方案
如果您让矩形函数返回字符串,而不是打印它,这是最简单的!
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))
*** *** *** *** *** *** ***
* * * * * * * * * * * * * *
*** *** *** *** *** *** ***
推荐阅读
- c - 带有 2 个可执行文件的 Makefile 错误:“main”的多个定义
- javascript - 使用具有所有用户名的 forEach 创建一个数组
- php - 简单的html dom提取没有域名的链接
- linux - 使用 ksh 返回目录中行数最多的文件
- r - 如何删除R中的一个数字
- xcode - 故事板中的所有视图控制器突然只显示安全区域
- html - 为移动站点加载一个图像并隐藏另一个,加载隐藏的图像并在 Squarespace 上隐藏移动图像
- csv - 有没有办法通过 csv 文件在 mysql 工作台中创建关系?
- linux - 创建将基于来自 webform 的值构建子域 (linux/whm/cpanel) 的脚本
- jquery - 循环遍历项目列表(跳过并继续计数)