Python基础综合训练一(杨辉三角的打印)

1 写作动机

答案太过于敷衍了事,完全体现不出杨辉三角的性质,自己重新编码了一下。

2 答案参考代码

#!/usr/bin/python3.8
# -*- coding: utf-8 -*-
# @Time    : 2021/6/23 11:24
# @Author  : Yujie_Xue
# @Email   : xyj19970628@163.com
# @File    : 7.6 yanghui_angle_answer.py
# @Software: PyCharm

# 答案太垃圾!!根本没有体现出杨辉三角的性质
def main():
    num = int(input('Number of rows: '))
    yh = [[]] * num
    for row in range(len(yh)):
        yh[row] = [None] * (row + 1)
        for col in range(len(yh[row])):
            if col == 0 or col == row:
                yh[row][col] = 1
            else:
                yh[row][col] = yh[row - 1][col] + yh[row - 1][col - 1]
            print(yh[row][col], end='\t')
        print()


if __name__ == '__main__':
    main()

输出:
在这里插入图片描述

3 我的编码

#!/usr/bin/python3.8
# -*- coding: utf-8 -*-
# @Time    : 2021/6/22 23:45
# @Author  : Yujie_Xue
# @Email   : xyj19970628@163.com
# @File    : 7.6 yanghui_angle.py
# @Software: PyCharm

# 打印杨辉三角
import numpy as np
def print_angle(n):
    # 先初始化
    x = np.zeros((n, n))
    for i in range(n):
        x[i][0] = x[i][i] = 1

    # 迭代修改值
    max = 0
    for i in range(2, n):
        for j in range(1, i):
            x[i][j] = x[i-1][j-1] + x[i-1][j]
            if max < len(str(x[i][j])): max = len(str(x[i][j]))
    # 格式输出
    for i in range(n):
        s = ''
        white = ' ' * max
        for j in range(i+1):
            s += str(int(x[i][j]))
            if j != i: s = s + white
            if i == 1 and j == 0: s += ' '
        print(s.center(n * 2 * max + 2*n)) 
        # 要形成一个恰到好处三角形重点在于此处,要考虑最长的数字长度和数字与数字之间的缝隙大小,最后还要使用字符串居中输出

if __name__ == '__main__':
    n = int(input('输入你要的杨辉三角层数:'))
    print_angle(n)

输出:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值