当前位置:首页>python>2025年GESP 09月认证-->Python二级真题解析(编程题2-菱形)

2025年GESP 09月认证-->Python二级真题解析(编程题2-菱形)

  • 2026-09-02 20:30:36
2025年GESP 09月认证-->Python二级真题解析(编程题2-菱形)

编程题2:菱形

  • 试题名称:菱形
  • 时间限制:1.0 s
  • 内存限制:512.0 MB

3.2.1 题目描述

小 A 想绘制一个菱形。具体来说,需要绘制的菱形是一个 n 行 n 列的字符画,n 是一个大于3的奇数。菱形的四个顶点依次位于第1行、第n列、第n行、第n列的正中间,使用 # 绘制。相邻顶点之间也用 # 连接。其余位置都是 . 。
给定 n,请你帮小 A 绘制对应的菱形。

3.2.2 输入格式

一行,一个正整数n。

3.2.3 输出格式

输出共 n 行,表示对应的菱形。

3.2.4 样例

3.2.4.1 输入样例 1
3
3.2.4.2 输出样例 1
.#.
#.#
.#.
3.2.4.3 输入样例 2
9
3.2.4.4 输出样例 2
....#....
...#.#...
..#...#..
.#.....#.
#.......#
.#.....#.
..#...#..
...#.#...
....#....

3.2.5 数据范围

对于所有测试点,保证 3 ≤n ≤29 并且为奇数。

核心考点

二维图形打印、双重循环、坐标规律判断

解题思路与代码解析

1. 题目理解

输入一个奇数n,输出一个n行n列的字符图,形成一个菱形。

2. 程序功能点识别

功能点1:双重循环控制行列输出
  • 外层循环控制行数
  • 内循环逐一打印每行的字符,判断是否为#或.,根据坐标规律输出对应字符。 内循环结束后换行。
功能点2:判断坐标规律,确定#的判断逻辑

首先我们看 n=5的菱形对应的坐标:

(0,0) (0,1) (0,2) (0,3) (0,4)
(1,0) (1,1) (1,2) (1,3) (1,4)
(2,0) (2,1) (2,2) (2,3) (2,4)
(3,0) (3,1) (3,2) (3,3) (3,4)
(4,0) (4,1) (4,2) (4,3) (4,4)

观察四条边的坐标规律:

  1. 左上斜边,三个坐标点分别为(0,2)、(1,1)、(2,0),满足i+j=2;
  2. 右上斜边,三个坐标点分别为(0,2)、(1,3)、(2,4),满足j-i=2;
  3. 左下斜边,三个坐标点分别为(2,0)、(3,1)、(4,2),满足i-j=2;
  4. 右下斜边,三个坐标点分别为(2,4)、(3,3)、(4,2),满足i+j=6。

菱形的中点值为5//2=2,四条边的坐标规律可以用一个变量mid=(n-1)//2来表示,最终的判断条件为:

  • 左上斜边:i + j == mid
  • 右上斜边:j - i == mid
  • 左下斜边:i - j == mid
  • 右下斜边:i + j == 3 * mid

参考代码

# 菱形字符图绘制,n为奇数
n = int(input())
mid = (n - 1) // 2# 菱形中心坐标

# 外层循环控制行,内层循环控制列
for i in range(n):
for j in range(n):
# 判断是否在菱形的四条边上
if j + i == mid:
            print('#', end='')
elif j - i == mid:
            print('#', end='')
elif i - j == mid:
            print('#', end='')
elif i + j == 3 * mid:
            print('#', end='')
else:
            print('.', end='')
# 每行结束后换行
    print()

最新文章

随机文章