• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
村雨sup
自己选的路,跪着也要走完 XD
博客园    首页    新随笔    联系   管理    订阅  订阅
python 小练习 9
还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
..............
先在给你一个正整数n,请你输出杨辉三角的前n层
注意:层数从1开始计数,每层数字之间用一个空格隔开,行尾不要有空格。
如n=2,则输出:
1
1 1

AC代码如下:
a = [[0 for i in range(n)]for j in range(n)]

a[0][0] = 1
a[1][0] = 1
a[1][1] = 1
for i in range(n):
    a[i][0] = a[i][i] = 1
    for j in range(1,i//2+1): #取膜除法
        a[i][j] = a[i][i-j] = a[i-1][j-1] +a[i-1][j]

for i in range(n):
    print(' '.join(str(x)for x in a[i] if x!=0) )#这是一种输出方式
for i in range(n):
    for j in range(i+1):
        print(a[i][j],end=' ')
    print('\n',end='')#这是第二种输出方式

两行代码的解法:

for i in xrange(n):
    print " ".join(map(str, reduce(lambda x, y: map(sum, zip([0]+x, x+[0])), xrange(i), [1])))

 

posted on 2017-07-30 10:53  村雨sup  阅读(161)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3