python输入一个奇数生成一个菱形_python-循环-打印菱形图案

这篇博客介绍如何在Python中利用循环和简单归纳算法,不使用居中功能来绘制奇数行的菱形图案。通过示例和代码解析,讲解了计算每行空格和符号数的方法,包括单循环和双层嵌套循环两种实现方式。
摘要由CSDN通过智能技术生成

目标

不允许使用居中的功能

通过一个循环,完成菱形的输出

主要考查,循环知识,和简单的规纳算法能力

需求为

用户输入一个奇数

这个数,生成一个菱形

先画出菱形图

为了推出菱形的一些规律

可以先画出三个菱形作为参考

寻找规律

计算出左边行的公式

计算出每一行应出现的符号数

以7行为例

代码的框架

单循环

# 初步目标:完成五行的菱形

# 终级目标,任意奇数行的实现

# 中间行

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_num

return int(abs(num))

def get_start_num(current_num):

"""根据当前的行号,返回应该输出几个星星"""

num = 0 # 输出星星的数量

return num

def 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)/2

while 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 = 0

start_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)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值