|
发表于 2021-4-5 16:56:38
|
显示全部楼层
凑合着用吧
- n = int(input())
- nums = [[0]*n for i in range(n)] # 初始化一个n*n的零阵
- # 获得最大值,用以获取最大值的字符长度,确定以几个空格结尾
- biggest_value = -1
- for i in range(n):
- for j in range(n):
- if j == 0:
- nums[i][j] = 1
- else:
- nums[i][j] = nums[i-1][j-1]+nums[i-1][j]
- if nums[i][j] > biggest_value:
- biggest_value = nums[i][j]
- for i in range(n):
- print(" " * (n-i)*(len(str(biggest_value))//2+1),
- end="") # 打印左侧的空格数,len(str(biggest_value))//2+1 调整三角形倾斜率, +1 是因为最大值是个位数时,会输出0个空格
- for j in range(n):
- if nums[i][j] != 0:
- # 此步操作为将每一个数字视为和最大值的字符数相同
- # 假设最大为 50388,当输出为 1 时,自动在 1 后面补 4 个空格
- print(nums[i][j], end=" " *
- (len(str(biggest_value))-len(str(nums[i][j]))+1)) # 按照字符长度打印后面的空格数
- print()
复制代码 |
|