python-循环-打印菱形图案

目标 【python-循环-打印菱形图案】不允许使用居中的功能
通过一个循环,完成菱形的输出
主要考查,循环知识,和简单的规纳算法能力
需求为
用户输入一个奇数
这个数,生成一个菱形
先画出菱形图 为了推出菱形的一些规律
可以先画出三个菱形作为参考
python-循环-打印菱形图案
文章图片

寻找规律 python-循环-打印菱形图案
文章图片

计算出左边行的公式 python-循环-打印菱形图案
文章图片

计算出每一行应出现的符号数 以7行为例
python-循环-打印菱形图案
文章图片

代码的框架 单循环

# 初步目标:完成五行的菱形 # 终级目标,任意奇数行的实现# 中间行 mid_num = (5+1)/2# 3# i从0到4 def print_line(i): """ :param i: 行的索引。 第1行,i为0。第2行,i为1 :return: """ # 当传入的参数为0的时候,期望 有2个空格,1个符号 current_num = i + 1# 当前行 space_num = get_space_num(current_num)# 空格的数量 start_num = get_start_num(current_num)# 星花的数据 space = " "*space_num# 应有的空格数 start = "*"*start_num# 星花应有的数量 # print(space+start) print("当前第{}行,行索引{},有{}个左空格,有{}个星星".format(current_num, i, space_num, start_num))def get_space_num(current_num): """根据行的索引,获取空格应有的数量""" # mid_num - 当前行号 # 当i 为 0的时候,只需要返回2就可以了 # 当i 为1 的时候,返回1 # print(i) num = mid_num - current_numreturn int(abs(num))def get_start_num(current_num): """根据当前的行号,返回应该输出几个星星""" num = 0# 输出星星的数量 return numdef main(num=5): print("主逻辑,打印行数", num)for i in range(num): # print(i) print_line(i)if __name__ == '__main__': main(5) # print_line(0) # res = get_space_num(5) # print(res)

双层嵌套循环
def main(num): # 计数器 counter = 0 # 中间行 mid_num = (num+1)/2while counter < num: counter += 1 # print(counter)# 打印行号 # 遍历打印每一行 # 计算空格的数量 space_num = int(abs(mid_num-counter))# 计算星星的数量 start_num = num - 2*space_num # print("第{}行,{}空格,{}星星".format(counter, space_num, start_num))# space_str = " "*space_num inner_count = 0start_str = "*"*start_num # line_str = space_str+start_str # print(line_str) m = 0 while m < space_num: print(" ", end="") m += 1 n = 0 while n < start_num: print("*", end="") n += 1 print()if __name__ == '__main__': main(5)

    推荐阅读