python每行输出五个_「答案」python每日一题20201110

打印出如下图案(菱形)

c25d517421a6b830111e55f34e24b118.png
#常规代码def draw2(num):#num表示行的总对称次数    for i in range(1,num*2):#行数        for j in range(1,abs(num-i)+1): #空格            print(end=" ")        for j in range(1,num*2-abs(num-i)*2):#*号            print("*",end="")        print()#回车draw2(4)

以上代码主要是受传统编程语言的影响,用循环语句模拟打印过程,外层循环决定图形行数,内层分别绘制空格和星号。主要还是注意range函数的区间范围,print函数中end参数。

#python递归解法MAX_COL=9#每行最大占用空间def draw(num,n): #num表示行的总对称次数,n表示画第几次(倒数,除中间一条外每次画两行)a="*"*(2*(num-n)+1) #每行星号个数print(a.center(MAX_COL,' ')) #打印对称的上半部分if n!=1: draw(num,n-1) #递归打印下一行print(a.center(MAX_COL,' ')) #打印对称的下半部分draw(4,4)

上面的代码主要考虑到菱形的对称性,巧妙运用递归完成图形生成。其中字符串的center函数可以简化前置空格输出,字符串用*运算可以简化重复输出。所以第一种解法的代码可以做一下优化。

#常规代码MAX_COL=9#每行最大占用空间def draw2(num):#num表示行的总对称次数    for i in range(1,num*2):#行数        print(("*"*(num*2-abs(num-i)*2-1)).center(MAX_COL," "))#*号draw2(4)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值