用python编写杨辉三角金字塔_用python实现三道简单算法题:杨辉三角,蛇形矩阵,金字塔...
分享幾道簡單的python打印輸出的問題,本質上都是可以將其分解成一個大循環之中有幾個小循環。
1.楊輝三角
主要特點:
每個數等于它上方兩數之和。
每行數字左右對稱,由1開始逐漸變大。
每行端點與結尾的數為1
def triangles(N):
# 首行
line = [1]
for _ in range(N):
# 生成器
yield line
for i in range(1, len(line)):
# 每個數等于它上方兩數之和。
line[i] = pre[i] + pre[i - 1]
# 結尾端點為1,需要額外添加
line.append(1)
# 將本行當做生成下一行的依據
pre = line[:]
N = int(input("請輸入一個整數:"))
for i in triangles(N):
print(i)
2.打印蛇形矩陣
input:4
打印如下:
1 ? ? ?2 ? ? ?3 ? ? 4
12 ? 13 ? ?14 ? ?5
11 ? 16 ? ?15 ? ?6
10 ? ?9 ? ? ?8 ? ? 7
# NumPy系統是Python的一種開源的數值計算擴展。
# 這種工具可用來存儲和處理大型矩陣,
# 比Python自身的嵌套列表(nested list
# structure)結構要高效的多
# (該結構也可以用來表示矩陣(matrix))
# 強大的N維數組
觀察圖形可以看出:
4*4 = 4+3+3+2+2+1+1
5*5 = 5+4+4+3+3+2+2+1+1
所以大循環套著四個小循環,而小循環的次數有以上規律
代碼實現如下:
# -*- coding: utf-8 -*-
"""
Created on Tue Aug 14 08:47:34 2018
@author: Python
"""
import numpy
N = int(input("請輸入一個整數:"))
#先打印出N*N的0矩陣
Arr = numpy.zeros((N,N),dtype=numpy.int16)
#記錄數字
num = 1
i = 0 #記錄行
j = 0 #記錄列
times = N #記錄循環次數
while num <= N*N:
# 向右,列的變化,不斷增加
for _ in range(times):
# 改變數組對應位置的值
Arr[i][j] = num
num += 1
j += 1
times -= 1
# 循環結束時,行列的值需要相應的改變
j -= 1
i += 1
# 向下,行的變化,不斷增加
for _ in range(times):
Arr[i][j] = num
num += 1
i += 1
i -= 1
j -= 1
# 向左,列的變化,不斷減少
for _ in range(times):
Arr[i][j] = num
num += 1
j -= 1
times -= 1
j += 1
i -= 1
# 向上,行的變化,不斷減少
for _ in range(times):
Arr[i][j] = num
num += 1
i -= 1
i += 1
j += 1
print(Arr)
3.打印三角形數:
# 比如,輸入n=5
#???? 1
#??? 121
#?? 12321
#? 1234321
# 123454321
N = int(input("請輸入N:"))
i = 1
while i <= N:
i += 1
# 打印空格0,N-i
for x in range(0, N+1-i):
print(" ", end='')
# 從小到大打印數字1->i
for y in range(1,i):
print(y, end='')
# 從大到小打印數字
for z in range(1,i-1):
print(i-1-z, end='')
print("")
總結
以上是生活随笔為你收集整理的用python编写杨辉三角金字塔_用python实现三道简单算法题:杨辉三角,蛇形矩阵,金字塔...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华语剧集《模仿犯》上线 Netflix:
- 下一篇: dnf泰波尔斯制作周期有多长(DNF官方