求编写矩形内嵌菱形的Python代码:仅完成菱形部分,需补充矩形部分
矩形内嵌菱形的完整实现
基于你提供的菱形代码,我们可以通过以下步骤添加矩形边框:
- 先收集菱形的每一行内容,避免重复输出逻辑;
- 打印矩形的顶部边框(全星号,长度等于菱形的最大宽度
a); - 对每一行菱形内容,将其居中填充到矩形内部(宽度为
a-2,减去左右边框的星号),然后在前后各加一个星号; - 打印矩形的底部边框。
完整代码如下:
a = int(input()) b = a // 2 c = b + 1 # 收集菱形的所有行内容 diamond_rows = [] # 原菱形上半部分 for i in range(0, c): row = "" for j in range(0, c - i): row += " " for l in range(0, i): row += "*" for e in range(0, i - 1): row += "*" diamond_rows.append(row) # 原菱形下半部分 for i in range(0, c): row = "" for j in range(0, i): row += " " for l in range(0, b - i + 1): row += "*" for e in range(0, b - i): row += "*" diamond_rows.append(row) # 打印矩形内嵌菱形 rect_width = a # 顶部边框 print("*" * rect_width) # 中间行 for row in diamond_rows: padded_row = row.center(rect_width - 2) print(f"*{padded_row}*") # 底部边框 print("*" * rect_width)
优化说明(可选)
你提供的原菱形代码输出的是左对齐的菱形,若需要常规的居中菱形,可以替换菱形生成部分的代码,这样内嵌后的效果更规整:
a = int(input()) if a % 2 == 0: print("请输入奇数") else: b = a // 2 diamond_rows = [] # 上半部分居中菱形 for i in range(b + 1): stars = 2 * i + 1 spaces = b - i diamond_rows.append(" " * spaces + "*" * stars) # 下半部分居中菱形 for i in range(b - 1, -1, -1): stars = 2 * i + 1 spaces = b - i diamond_rows.append(" " * spaces + "*" * stars) # 矩形边框部分 rect_width = a print("*" * rect_width) for row in diamond_rows: padded_row = row.center(rect_width - 2) print(f"*{padded_row}*") print("*" * rect_width)
内容的提问来源于stack exchange,提问作者Kiyan
相关产品推荐
相关产品推荐

