首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

打印给定N行数的正方形图案的程序(数字为奇数)

要打印一个给定行数 ( N ) 的正方形图案,其中 ( N ) 是奇数,可以使用嵌套循环来实现。以下是一个用Python编写的示例程序:

代码语言:txt
复制
def print_square_pattern(n):
    if n % 2 == 0:
        print("N必须是奇数")
        return
    
    # 计算中心位置
    center = n // 2
    
    for i in range(n):
        for j in range(n):
            # 计算当前位置到中心的距离
            dist = abs(i - center) + abs(j - center)
            if dist <= center:
                print(center - dist + 1, end=' ')
            else:
                print(' ', end=' ')
        print()

# 示例调用
N = 5
print_square_pattern(N)

解释

  1. 输入验证:首先检查 ( N ) 是否为奇数,如果不是奇数则输出提示信息并返回。
  2. 中心位置计算:计算正方形的中心位置,即 center = n // 2
  3. 嵌套循环:使用两个嵌套的 for 循环遍历每个位置 (i, j)
  4. 距离计算:计算当前位置到中心的曼哈顿距离 dist = abs(i - center) + abs(j - center)
  5. 打印数字:如果距离小于等于中心位置,则打印从中心向外的数字;否则打印空格。

输出示例

对于 ( N = 5 ),输出如下:

代码语言:txt
复制
1 1 1 1 1 
1 2 2 2 1 
1 2 3 2 1 
1 2 2 2 1 
1 1 1 1 1 

应用场景

这种图案可以用于各种视觉效果展示,例如:

  • 图形用户界面(GUI)设计
  • 数据可视化
  • 艺术创作

参考链接

如果你需要更多关于Python编程的信息,可以参考以下链接:

希望这个解答对你有帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

用for循环语句实现在屏幕上打印特殊图案编程题目的解法

; } 相似题目验证模版普适性及对于模版套用巩固 正方形图案 KiKi学习了循环,BoBo老师给他出了一系列打印图案练习,该任务是打印用“*”组成正方形图案。...输入描述: 多组输入,一个整数(1~20),表示正方形长度,也表示输出行数。 输出描述: 针对每行输入,输出用“*”组成对应边长正方形,每个“*”后面有一个空格。...("");语句,其中带有for循环有8个,程序如下。...“空心”正方形图案 KiKi学习了循环,BoBo老师给他出了一系列打印图案练习,该任务是打印用“*”组成“空心”正方形图案。...输入描述: 多组输入,一个整数(3~20),表示输出行数,也表示组成正方形“*”数量。 输出描述: 针对每行输入,输出用“*”组成“空心”正方形,每个“*”后面有一个空格。

2.2K10

2023-09-20:用go语言,保证一定是n*n正方形,实现从里到外转圈打印功能 如果n奇数,中心点唯一,比如 a b

2023-09-20:用go语言,保证一定是n*n正方形,实现从里到外转圈打印功能 如果n奇数,中心点唯一,比如 a b c d e f g h i e是中心点,依次打印 : e f i h g...2.获取二维切片m长度n。 3.设置四个变量a, b, c, d(n-1)/2, (n-1)/2, n/2, n/2,分别表示每一层起始点和终止点。 4.使用循环,从最外层到最内层逐层打印。...2.对于其他情况,依次打印当前层四个边。 2.a. 从起始点下一行开始,按列打印边界元素,即从上到下。 2.b. 从终止点左侧列开始,按行打印边界元素,即从右到左。 2.c....在主函数main中,定义了几个测试用例,分别为不同大小二维字节切片m,然后调用print函数进行打印。 总时间复杂度O(n^2),其中n输入二维切片m大小。...总额外空间复杂度O(1),没有使用额外空间。

18560
  • 2022-12-22:给定一个数字n,代表数组长度,给定一个数字m,代表数组每个位置都可以在1~m之间选择数字,所有长度n

    2022-12-22:给定一个数字n,代表数组长度, 给定一个数字m,代表数组每个位置都可以在1~m之间选择数字, 所有长度n数组中,最长递增子序列长度3数组,叫做达标数组。...返回达标数组数量。 1 <= n <= 500, 1 <= m <= 10, 500 * 10 * 10 * 10, 结果对998244353取模, 实现时候没有取模逻辑,因为非重点。...// f、s、t : ends数组中放置数字!...// n : 一共长度! // m : 每一位,都可以在1~m中随意选择数字 // 返回值:i..... 有几个合法数组!...// 尤其是理解ends数组意义! fn number2(n: i32, m: i32) -> i32 { //repeat(vec!

    89450

    数组刷题总结,快来检查一下是不是都掌握了吧~

    1打印X 题干如下 描述 KiKi学习了循环,BoBo老师给他出了一系列打印图案练习,该任务是打印用“*”组成X形图案。...); return 0; } 2打印空心正方形 描述 KiKi学习了循环,BoBo老师给他出了一系列打印图案练习,该任务是打印用“*”...组成“空心”正方形图案。...输入描述: 多组输入,一个整数(3~20),表示输出行数,也表示组成正方形“*”数量。 输出描述: 针对每行输入,输出用“*”组成“空心”正方形,每个“*”后面有一个空格。...我们可以观察到只有当行数第一行以及最后一行,列数最后一列或第一列时,*才会被打印

    10710

    陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯

    陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯 题目 思路 程序如下 总结 题目 谢尔宾斯基地毯是形如上图正方形分形图案,每个地毯可分为等大小9份,其中中央挖空,其余均由更小地毯组成...现给定地毯大小(行数)与组成地毯字符元素,请打印相应地毯图形。...注:空腔以半角空格表示;当给定字符元素长度不为1时空格数须与字符长度对应 输入格式: 输入两行,分别为地毯大小正整数N与组成元素字符串c 输入数据保证N3正整数幂 输出格式: 由N行长度...N*len©字符串构成谢尔宾斯基地毯 输入样例: 9 [] 思路 用递归方法 向最小格式迭代 每次按规律增加图形长宽 程序如下 def carpet(N, char): len_c...ans = carpet(n, c) for i in ans: #打印图形 print(i) 总结 增加长宽时,要注意carpet(N, char)中char字符宽度 ---

    54020

    2022-09-09:给定一个正整数 n,返回 连续正整数满足所有数字之和 n 组数 。 示例 1:输入: n = 5输出:

    2022-09-09:给定一个正整数 n,返回 连续正整数满足所有数字之和 n 组数 。...k + 1),这个式子来说,只要给定不同一组x和k,就对应一种不同方案 进一步分析可以看出: 如果k偶数,那么2x + k + 1就是奇数 如果k奇数,那么2x + k + 1就是偶数 2N...= 左 K 右 2x + k + 1 2N 奇数因子K, 2x + k + 1 也就是说,对于每一种方案,k和2x + k + 1,一定是不同,并且连奇偶性都相反 所以2N里任何一个奇数因子,可能作为...k这一项,也可能作为2x+k+1这一项, 不管奇数因子作为哪一项,都可以推出另外一项值,进而确定k和x具体是多少 进而可以推出,2N里有多少个奇数因子,就有多少种方案 于是这个题就变成了求N里有多少奇数因子...一般来说,求N里有多少奇数因子,用O(根号N)方法肯定可以 但其实可以更加优化, 如果 N = 3^a * 5^b * 7^c * 9^d ....那么N一共会出现多少奇数因子呢?

    71050

    给定一个长度n数组,请将数组中元素按照奇偶性重新划分,所有奇数靠左边,所有偶数靠右边,然后分别对奇数、偶数部分进行排序

    输入n n数组元素个数 2. 输入n个数 存储到一个数组中 3. 用Arrays对数组进行排序 4....java.util.Arrays; import java.util.Scanner; public class Odevity { /* OJ题库ID1007:奇偶数 给定一个长度...n数组,请将数组中元素按照奇偶性重新划分,所有奇数靠左边,所有偶数靠右边,然后分别对奇数、偶数部分进行排序 请尽可能实现通过一次遍历并且原地操作(即不得借助其他数组)进行奇偶划分。...Input 输入有两行,第一行输入一个数字n表示数组长度, 第二行依次输入n数字,表示数组元素值。...= sc.nextInt(); // 定义数组 数组元素个位n int[] arr = new int[n]; // 输入n个数 for

    94620

    牛客网刷题笔记小节(二)

    A选项错误:编译时无法确定,编译时候编译器不知道n是什么值,n值要等到程序运行起来后,用户输入之后n值确定了,才能确定数组大小 B选项:说法不严谨,一定是在运行时确定大小,而不是可能 C选项正确...D选项错误:存储什么类型数据,看定义时候给数组名前放什么类型,比如int a[n]就是存放int类型 short a[n]就是存在short类型 二、图案打印 2.1 牛客网–>[X形图案] -...------------------------------------------------->X形图案 输入描述: 多组输入,一个整数(2~20),表示输出行数,也表示组成“X”反斜线和正斜线长度...printf(" "); } printf("\n"); } } return 0; } 2.1 牛客网–>[空心正方形图案...] -------------------------------------------------->空心正方形图案 输入描述: 多组输入,一个整数(3~20),表示输出行数,也表示组成正方形

    9610

    输出图案类问题思路

    一、问题导入 编写一个程序,只用两条输出语句,生成一个像半个5*5正方形形状(直角三角形)#符号图案: ##### #### ### ## # 二、问题分析 我们可以采用消减法,先把它想象成一个5*5...那么,接下来应该怎样修改代码,使它产生半正方形图案呢? 如果我们观察上面的程序清单并把它与自己所需要正方形输出进行比较,可以发现问题在于条件表达式hashNum <= 5上。...接下来,我们要进行另一个消减程序试验:写一段代码,功能:显示数字从5到1,每个数字出现在单独一行中 分析:我们必须找到一种表达式,在第一行时其值5,在第二行时其值4,接下来以此类推。...所以“显示数字从5到1,每个数字出现在单独一行中”代码: 1 for(int row = 1;row <= 5;row++) 2 { 3 printf("%d\n"...,(6-row)); 4 } 所以打印半个5*5正方形形状(直角三角形)#符号图案完整代码 1 #include 2 int main() 3 { 4 for

    1.9K40

    打印沙漏 C语言

    题目 本题要求你写个程序给定符号打印成沙漏形状。...例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1...给定任意N个符号,不一定能正好组成一个沙漏。要求打印沙漏能用掉尽可能多符号。 输入格式: 输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。...输出格式: 首先打印出由给定符号组成最大沙漏形状,最后在一行中输出剩下没用掉符号数。...把图案分成上下两部分,先求带尖,根据等差数列相应公式,公差2,第n个应该是2n-1,总数应该是n平方,加上另一部分,总数应该是2*n*n-1,对于第n图案,应该有2n-1层。

    23930

    2022-09-09:给定一个正整数 n,返回 连续正整数满足所有数字之和 n 组数 。 示例 1: 输入: n = 5 输出: 2 解释: 5 = 2 +

    2022-09-09:给定一个正整数 n,返回 连续正整数满足所有数字之和 n 组数 。...k + 1),这个式子来说,只要给定不同一组x和k,就对应一种不同方案 进一步分析可以看出: 如果k偶数,那么2x + k + 1就是奇数 如果k奇数,那么2x + k + 1就是偶数 2N...= 左 K 右 2x + k + 1 2N 奇数因子K, 2x + k + 1 也就是说,对于每一种方案,k和2x + k + 1,一定是不同,并且连奇偶性都相反 所以2N里任何一个奇数因子,可能作为...k这一项,也可能作为2x+k+1这一项, 不管奇数因子作为哪一项,都可以推出另外一项值,进而确定k和x具体是多少 进而可以推出,2N里有多少个奇数因子,就有多少种方案 于是这个题就变成了求N里有多少奇数因子...一般来说,求N里有多少奇数因子,用O(根号N)方法肯定可以 但其实可以更加优化, 如果 N = 3^a 5^b 7^c * 9^d ....那么N一共会出现多少奇数因子呢?

    70410

    图形搭建

    例一: 输入描述: 多组输入,一个整数(2~20),表示输出行数,也表示组成“X”反斜线和正斜线长度。 输出描述: 针对每行输入,输出用“*”组成X形图案。...如图: 我们可以发现,定义两个变量,当两个变量值相等时,就打印“ * ”,或者当两个变量相加等于输入变量值减去一时,也打印“ * ”。 废话不多说,上代码。...);     }     return 0; } 我们可以用编译器进行打印,输出结果 例二: 输入描述: 多组输入,一个整数(3~20),表示输出行数,也表示组成正方形“*”数量。...输出描述: 针对每行输入,输出用“*”组成“空心”正方形,每个“*”后面有一个空格。...我们可以发现,当创建两个变量,并且他们值等于0或者3时,打印“ * ”。

    8610

    2023-08-02:给定一棵树,一共有n个点, 每个点上没有值,请把1~n这些数字,不重复分配到二叉树上, 做到 : 奇数

    2023-08-02:给定一棵树,一共有n个点, 每个点上没有值,请把1~n这些数字,不重复分配到二叉树上, 做到 : 奇数层节点值总和 与 偶数层节点值总和 相差不超过1。...返回奇数层节点分配值一个方案。 2 <= n <= 10^5 。 来自腾讯音乐。 答案2023-08-02: 大致步骤如下: 1.计算出1到n总和sum。...2.确定两个目标值p1和p2,它们分别是sum整数除法结果和向上取整结果。p1和p2代表了奇数层节点总和和偶数层节点总和一半。 3.调用generate函数来生成奇数层节点分配方案。...• generate函数时间复杂度O(k)。 • 整体时间复杂度O(k)。 空间复杂度分析: • generate函数中创建了一个大小k数组来存储结果,所以空间复杂度O(k)。...- j; } return ans; } // 1 ~ n 奇数节点个数是k个 // 返回奇数节点值有哪些 int* team(int n, int k) { // 1 ~

    17230

    挑战30天学完Python:Day10 循环

    总之如果你想提升自己Python技能,欢迎加入《挑战30天学完Python》 循环 生活中充满了例行公事。在程序中一样,也要做很多重复工作。编程语言使用循环处理这些重复任务。...在符合给定条件之内,它会一直重复执行语句块。当条件false时,代码将跳出循环。...第10天练习 练习1级 使用for循环打印0-10,然后用while实现同样功能 使用for循环打印10-0,然后同样用while实现 编写一个打印循环(7次),输出如下三角图案: # ## ###...使用for循环0到100,且只打印偶数 使用for循环0到100,但只打印奇数 练习2级 使用for循环从0到100进行迭代,并输出所有数字和。...所有数据相加总和 = 5050 使用for循环从0到100进行迭代,并输出所有偶数和所有奇数和。 所有偶数和是2550。所有奇数总和是2500。 CONGRATULATIONS !

    21110

    USACO Training Section 1.2 方块转换 Transformations

    题目描述 一块N x N(1<=N<=10)正方形黑白瓦片图案要被转换成新正方形图案。...写一个程序来找出将原始图案按照以下列转换方法转换成新图案最小方式: 1:转90度:图案按顺时针转90度。 2:转180度:图案按顺时针转180度。 3:转270度:图案按顺时针转270度。...4:反射:图案在水平方向翻转(以中央铅垂线中心形成原图案镜像)。 5:组合:图案在水平方向翻转,然后再按照1到3之间一种再次转换。 6:不改变:原图案不改变。...第二行到第N+1行: N行每行N个字符(不是“@”就是“-”);这是转换前正方形。 第N+2行到第2*N+1行: N行每行N个字符(不是“@”就是“-”);这是转换后正方形。...输出格式: 单独一行包括1到7之间一个数字(在上文已描述)表明需要将转换前正方形变为转换后正方形转换方法。

    47520

    iOS多边形马赛克实现(上)

    下面我们先从最普通正方形马赛克说起。 正方形马赛克 用户选图进入马赛克模块,选择正方形马赛克后(目前是默认选择),对图像某区域进行涂抹,会看到该区域被打码处理。...为了考虑算法通用性,以便于用独立素材模式实现各种图案平铺。我把过程拆解以下几个步骤 找到最小重复单元 比如六边形最小平铺单元是六边形本身,而直角三角形最小重复单元是一个正方形。...是否对齐排列 显而易见,六边形偶数行会比奇数行右移0.5倍单元宽度距离;而直角三角形上下是对齐。因此我们需要一个参数来定义对齐方式是否受到行数影响。(考虑一下这个参数是否必要?...事实上上述这些规律排列图案都能找到上下对齐单元。比如六边形平铺可以用两个紧邻六边形组成一个单元来定义,就不用考虑奇数行/偶数行对整体排列造成影响。...但是这个参数还是很有必要,后面会提到) 定义好这些参数之后,我们就可以计算出整张图像以单位图案平铺行数和列数。然后遍历每个重复单元,依据mask素材alpha通道值来计算对应区域平均颜色。

    4K110
    领券