python下输入一个正奇数后打印出镂空的菱形

先上代码和效果图:

代码
输出效果为一个17行的菱形,菱形边为符号( * ) ,图形内外均使用空格填充。
写代码时的思路是按循环生成每一行居中的字符串, 也就是符号( * )和空格组成的字符串 , 空格填充 , 然后循环打印, 得到每一行的效果 。
代码中最难处理的部分是如何在较少代码量和判断语句的情况下生成第一行的样式.
这里用到了bool, 先考虑上三角部分, 第一行字符串只有一个( * )符号,没有第二个符号也没有空格, 而第一行与其他行的区别就是他循环时的 i 值为零 ,其他行不为零, 在
bool( int ) 下就得到第一行为零,其他行全为1。把bool值分别乘上第二个( * )符号和中间的空格表达式,即 " * " + " " * bool(i)+ " * " * bool(i)。其中i为循环中的值。
后面便是字符串居中填充,center(字符串加填充总长度,填充内容)。下三角便是将说三角的循环反过来,当然,范围要调整一下使得循环到最后时,最后一行的
bool(i)为零。

# 因为只有 奇数 行才能实现上面比下面多一层,依此来实现 菱形 layer =int (input("请输入您想 打印 空心 菱形 的层 :")) #上半部分(layer // 2 + 1 层) for i in range(1,layer // 2 + 2): # i为当前的行 , space_num = layer // 2 + 1 - i # 用上半部分的行 输入一个 奇数 ),按要求 打印 菱形 。要求,第一行 打印 1个*,第二行 打印 3个*,每行等差递增直到 输出 n个*,之后每行递减 输出 ,直到 输出 1个*。注意:所有*构成一个 菱形 的形状,即 菱形 本身靠中轴线对齐。(注意本题的 输出 格式) 第1行是一个整 n,表示随后有n组 据。每组 据占一行。 若n不符合要求, 输出 error;若n符合要求,首先 输出 print,然后换行 打印 菱形 ,并换行。注意:菱...
for i in range(6): # 循环 6次 打印 6行 for j in range(5-i): # 打印 空格每次 循环 递减 print(’ ‘,end=’’) for q in range(2i+1): # 打印 星星 if q0 or i5 or q==2i: #判断 打印 星星位置,在开头,结尾和最后一行 打印 星星 print(’*’,end=’’) else: print(’ ‘,end...
C语言永远不会过时 其实学编程关键是学习其思想,如果你精通了一门,再去学其他的时候也很容易上手。C不会过时的,尤其是在unix、linux操作平台上,学好C是必须的。 C跟C++在很多方面也是兼容的,c是c++的基础。 再者c能从很大的程度上帮你了解计算机的发展史, 据结构等方面的知识,很多软件、甚至操作系统中的很大部分是用c来实现的。 还有一些电器芯片...
layer = int(input("请输入 确的要 打印 的行 ,注意是 奇数 行:")) #因为只有 奇数 行才能实现上面比下面多一层,依此来实现 菱形 #上半部分 #由于 菱形 必须要是 奇数 且娶不到+1的 for i in range(1,layer // 2 + 2): #计算空格的个 #由于空格 是根据输入的层 减去遍历到的层 来实现 spce_num = layer // 2 + 1 - i #从空格来 打印 空格的 ( 菱形 行)分为一个 三角形和一个倒三角形 layer = int(input("请输入 打印 的行 :")) while layer % 2 == 0: layer = int(input("对不起,请输入 奇数 行:")) #上半部分 分为两个等腰三角形 for i in range(1,layer // 2 + 2):#上半部分多 打印 一行 layer=5 #计算 空格的个 space_num = layer - i; for j in range(0,space_nu