【Python】100基礎例(1-50)+數據分析例

  • 1:1、2、3、4,能組成多少個互不相同且無重複數字的三位數?各是多少?
#題目:有四個數字:1、2、3、4,能組成多少個互不相同且無重複數字的三位數?各是多少?
#程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列後再去 掉不滿足條件的排列。
#個人:1、個位/十位/百位的循環;2、用d記錄數量(先初始化再append)
d=[]
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if (i!=j) and (i!=k) and (j!=k):
                d.append([i,j,k])
                print(i, j, k)
print('總數量:',len(d))
  • 2、企業發放的獎金根據利潤提成
'''
題目:企業發放的獎金根據利潤提成。利潤(I)低於或等於10萬元時,獎金可提10%;
利潤高於10萬元,低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分,可提成7.5%;
20萬到40萬之間時,高於20萬元的部分,可提成5%;40萬到60萬之間時高於40萬元的部分,可提成3%;
60萬到100萬之間時,高於60萬元的部分,可提成1.5%,高於100萬元時,超過100萬元的部分按1%提成,
從鍵盤輸入當月利潤I,求應發放獎金總數?
程序分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長整型
'''
#個人:像做數學題一樣。其實並不難,搞清倆循環,推導OK
benefit=int(input('輸入淨利潤:'))#輸入120000
arr=[1000000,600000,400000,200000,100000,0]
rat=[0.01,0.015,0.03,0.05,0.075,0.1]
r=0#初始化獎金=0
for i in range(0,6):
    if benefit>arr[i]:#①arr[4]=100000,120000>arr[4]成立;②arr[5]=0,100000>arr[5]成立
        r+=(benefit-arr[i])*rat[i]#①故此部分提成=(120000-100000)*0.075=1500,r=0+1500=1500;②部分提成=(100000-0)*0.1=10000,r=1500+10000=11500
        print((benefit-arr[i])*rat[i])#①利潤12萬,高於10萬的部分提成1500;②低於10萬的部分提成10000
        benefit=arr[i]#①arr[i]=1000000;②arr[i]=0  for循環結束,流程結束
print(r)#r=11500
  • 3、一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
'''
題目:一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
程序分析:假設該數爲 x。
1、則:x + 100 = n2, x + 100 + 168 = m2
2、計算等式:m2 - n2 = (m + n)(m - n) = 168
3、設置: m + n = i,m - n = j,i * j =168,i 和 j 至少一個是偶數
4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要麼都是偶數,要麼都是奇數。
5、從 3 和 4 推導可知道,i 與 j 均是大於等於 2 的偶數。
6、由於 i * j = 168, j>=2,則 1 ≤i < 168 / 2 + 1  =85。
7、接下來將 i 的所有數字循環計算即可。
'''
#個人:數學推導較難,程序實現:由數學推導逆序實現OK
for i in range(1,85): #推導得,i的範圍在[1,85)
    if 168%i ==0: #若i能被168整除,則可以直接由"i*j=168"算出j
        j=168/i
        if i>j and (i+j)%2 ==0 and (i-j)%2==0 :#若滿足 i和j都是偶數或都是奇數
            m=(i+j)/2
            n=(i-j)/2
            x=n*n-100#則可以直接由"x + 100 = n2"算出x
            print(x)
'''
-99.0
21.0
261.0
1581.0
'''
  • 4、輸入某年某月某日,判斷這一天是這一年的第幾天
#題目:輸入某年某月某日,判斷這一天是這一年的第幾天?
#程序分析:以3月5日爲例,應該先把前兩個月的加起來,然後再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大於2時需考慮多加一天:
year=int(input('year:\n'))
month=int(input('month:\n'))
day=int(input('month:\n'))
months = (0,31,59,90,120,151,181,212,243,273,304,334)
if 0<month<=12:
    sum=months[month-1]
else:
    print('data error')
sum+=day
leap=0
#閏年且輸入月份大於2時(2月)需考慮多加一天
#閏年的二月爲29天,平年的二月爲28天
#閏年需要同時滿足以下條件:1、年份能被4整除;2、年份若是 100 的整數倍的話需被400整除,否則是平年。
if (year%400 ==0) or ((year%4==0) and (year%100 !=0)):
    leap=1
if (leap==1) and (month>2):
    sum+=1
print('it is the %dth day.'%sum)
  • 5、輸入三個整數x,y,z,請把這三個數由小到大輸出
'''
題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。
程序分析:我們想辦法把最小的數放到x上,
先將x與y進行比較,如果x>y則將x與y的值進行交換,
然後再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。
'''
#個人:注意如何輸入三個數(藉助藉助[]和append),至於排序,直接用sort()即可
l=[]
for i in range(3):#輸入三個數:藉助[]和append
    x=int(input('輸入整數:\n'))
    l.append(x)#l爲列表<class 'list'>
l.sort()#排序:sort()
print(l)
  • 6、斐波那契數列
'''
題目:斐波那契數列
程序分析:斐波那契數列(Fibonacci sequence),又稱黃金分割數列,指的是這樣一個數列:0、1、1、2、3、5、8……
在數學上,費波那契數列是以遞歸的方法來定義:
F0 = 0     (n=0)
F1 = 1    (n=1)
Fn = F[n-1]+ F[n-2](n=>2)
'''
#法一:普通小循環
def fib(n):
    a,b=1,1
    for i in range(n-1):
        a,b=b,a+b
    return a
print(fib(10))
#法二:遞歸
def fib(n):
    if n==1 or n==2:
        return 1
    return fib(n-1)+fib(n-2)
print(fib(10))
#法三:如果需要輸出指定個數的斐波那契數列,可以使用以下代碼:
def fib(n):
    if n==1:
        return [1]
    if n==2:
        return [1,1]
    fibs=[1,1]
    for i in range(2,n):
        fibs.append(fibs[-1]+fibs[-2])
    return fibs
print(fib(5))
  • 7、列表數據複製
#題目:將一個列表的數據複製到另一個列表中。
#程序分析:使用列表[:]
a=[1,2,3]
b=a[:]
c=a.copy()
print(b)
print(c)
#或 使用 for 循環出列表元素,並逐以放到新的列表中
d=[]
for i in range(len(a)):
    d.append(a[i])
print(d)
  • 8、九九乘法表
#題目:輸出 9*9 乘法口訣表
#程序分析:分行與列考慮,共9行9列,i控制行,j控制列
for i in range(0,10):
    for j in range(1,i+1):
        print("%d*%d=%d"%(i,j,i*j),end=' ')
    print()

for i in range(0,10):
    for j in range(1,i+1):
        print('{}*{}={}'.format(i,j,i*j),end=' ')
    print()

#%d和{}.format均表示格式化輸出
  • 9、暫停10秒輸出(會有停頓效果)
#題目:暫停10秒輸出。
#程序分析:使用 time 模塊的 sleep() 函數
import time
myD={1:'a',2:'b'}
for key,value in dict.items(myD):
    print(key,value)
    time.sleep(10)
  • 10、暫停一秒輸出,並格式化當前時間
#題目:暫停一秒輸出,並格式化當前時間
import time
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
#暫停一秒
time.sleep(1)
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))

#time strftime() 函數:返回以可讀字符串表示的當地時間
#其他方法
import time,datetime
time.sleep(1)
TIME=datetime.datetime.now()
print(type(TIME))#<class 'datetime.datetime'>
print(TIME.strftime('%Y-%m-%d %H:%M:%S'))
'''
datetime.datetime.now():返回系統當前時間(2018-09-18 18:39:55.921602)
datetime.datetime.now().date():返回當前時間的日期(2018-09-18)
datetime.datetime.now().time():返回當前時間的時分秒(18:40:24.946237)
datetime.datetime.ctime():將datetime.datetime類型轉化成str類型'''
  • 11、斐波那契數列 計算兔子數量
'''
題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,
假如兔子都不死,問每個月的兔子總數爲多少?
程序分析:兔子的規律爲數列1,1,2,3,5,8,13,21....(斐波那契數列)
'''
def fib(n):
    if n==1 or n==2:
        return 1
    else:
        return fib(n-1)+fib(n-2)
print(fib(6))#輸出第6個月的兔子數量=8
  • 12、判斷101-200之間有多少個素數,並輸出所有素數
'''
題目:判斷101-200之間有多少個素數,並輸出所有素數。
程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,則表明此數不是素數,反之是素數。
個人:學會這種思路!先初始化列表 再append()
'''
l=[]
for i in range(101,200):
    for j in range(2,i-1):
        if  i%j ==0:
            break
    else:
        l.append(i)
print(l)
print('總數爲:%d' % len(l))
  • 13、打印出所有的"水仙花數"
'''題目:打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個"水仙花數",因爲153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。
'''
for n in range(100,1000):#即[100,999)
    #取整://  取餘:%
    i=n//100
    j=n//10%10
    k=n%10
    if n==i**3+j**3+k**3:
        print(n)
  • 14、正整數分解質因數
'''題目:正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。
程序分析:對n進行分解質因數,應先找到一個最小的質數k,然後按下述步驟完成:
(1)如果這個質數恰等於n,則說明分解質因數的過程已經結束,打印出即可。
(2)如果n<>k,但n能被k整除,則應打印出k的值,並用n除以k的商,作爲新的正整數你n,重複執行第一步。
(3)如果n不能被k整除,則用k+1作爲k的值,重複執行第一步。'''
x=int(input('是否進入循環?是:1,否:2\n'))
while(x):
    n=int(input('請輸入正整數:'))
    print('%d='%n,end='')
    while n not in [1]:#判斷輸入的數值是不是1。如果是1,則不用循環,他的質因子就是1本身
        for index in range(2,n+1):
            if n%index==0:
                n=int(n/index)
                if n==1:
                    print('%d'%index,end='')
                else:
                    print('%d *'%index,end='')
                break
    print()
    x = int(input('是否進入循環?是:1,否:2\n'))
  • 15、利用條件運算符的嵌套 分數評級
'''
題目:利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。
程序分析:程序分析:(a>b)?a:b這是條件運算符的基本例子。
'''
score=int(input('輸入分數:\n'))
if score >=90:
    grade='A'
elif score >=60:
    grade='B'
else:
    grade='C'
print('%d屬於%s'%(score,grade))

#或:使用range()
def k(x):
    if x in range(60):
        print('C')
    elif x in range(60,90):
        print('B')
    else:
        print('A')
score=int(input('輸入分數:\n'))
k(score)
  • 16、輸出指定格式的日期
'''
題目:輸出指定格式的日期。
程序分析:使用 datetime 模塊。python中時間日期格式化符號:
%d 月內中的一天(0-31);%m 月份(01-12);%Y 四位數的年份表示(000-9999),%y 兩位數的年份表示(00-99)
'''
import datetime
if __name__=='__main__':#注意:倆等號
    print(datetime.date.today().strftime('%d/%m/%Y'))#輸出今日日期

    miyazakiBirthDate=datetime.date(1941,1,5)#創建日期對象
    print(miyazakiBirthDate.strftime('%d/%m/%Y'))

    miyazakiBirthNextDay=miyazakiBirthDate+datetime.timedelta(days=1)# 日期算術運算
    print(miyazakiBirthNextDay.strftime('%d/%m/%Y'))

    miyazakiFirstBirthday=miyazakiBirthDate.replace(year=miyazakiBirthDate.year+1) # 日期替換
    print(miyazakiFirstBirthday.strftime('%d/%m/%Y'))
'''14/11/2019
05/01/1941
06/01/1941
05/01/1942'''
import time
print(time.time())
print(time.localtime())
print(time.asctime())#Thu Nov 14 20:00:21 2019
print(time.strftime('%Y -%m -%d %H:%M:%S',time.localtime()))#2019 -11 -14 20:00:21

import datetime
print(datetime.date.today())#2019-11-14
print(datetime.date.today().strftime('%d/%m/%Y'))#14/11/2019
print(datetime.date(1941,1,5))#1941-01-05
  • 17、輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數
'''
題目:輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。
程序分析:利用 while 或 for 語句,條件爲輸入的字符不爲 '\n'。
'''
#法一:while循環 + string模塊的判斷字母/空格/數字函數
import string
s=input('輸入字符串:\n')
letters=0
space=0
digit=0
others=0
i=0
while i <len(s):
    c=s[i]
    i+=1
    if c.isalpha():
        letters+=1
    elif c.isspace():
        space+=1
    elif c.isdigit():
        digit+=1
    else:
        others+=1
print('letters=%d, space=%d, digit=%d, others=%d' % (letters,space,digit,others))

#法二:for循環 + string模塊的判斷字母/空格/數字函數
import string
ywp_s=input('輸入字符串:')
l=0
s=0
d=0
o=0
i=0
for c in ywp_s:
    if c.isalpha():
        l+=1
    elif c.isspace():
        s+=1
    elif c.isdigit():
        d+=1
    else:
        o+=1
print('letters=',l,'\nspace=',s,'\ndigit=',d,'\nothers=',o)

#法三:初始化空列表 + l.append()
iiinnn=input('輸入字符串:')
lll=[]
sss=[]
ddd=[]
ooo=[]
for i in iter(iiinnn):
    if i.isalpha()==True:
        lll.append(i)
    elif i.isspace()==True:
        sss.append(i)
    elif i.isdigit()==True:
        ddd.append(i)
    else :
        ooo.append(i)
print('字母:{},個數{};空格:{},個數{};'
      '數字:{},個數{};其他:{},個數{};'
      .format(lll,len(lll),sss,len(lll),ddd,len(ddd),ooo,len(ooo)))
  • 18、求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加由鍵盤控制
'''
題目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加由鍵盤控制。
程序分析:關鍵是計算出每一項的值。
'''
#法一
def fadd():
    a=input('輸入數字:')
    loopNum=int(input('數字循環次數:'))
    sum=0
    strsum=''
    for i in range(loopNum):
        sum+=int(str(a)*(i+1))
        strsum+=str((str(a)*(i+1)))+'+'
    strsum=strsum[:len(strsum)-1]+'='+str(sum)
    print(strsum)
fadd()
#法二
def calculate(a,n):
    sum=0
    for i in range(1,1+n):
        x=int(str(a)*i)
        sum+=x
    print(sum)
calculate(4,3)
  • 19、一個數如果恰好等於它的因子之和,這個數就稱爲"完數",例如6=1+2+3。編程找出1000以內的所有完數。
'''題目:一個數如果恰好等於它的因子之和,這個數就稱爲"完數"。例如6=1+2+3.編程找出1000以內的所有完數。
程序分析:請參照程序Python 練習實例14。'''
from sys import stdout
#用sys.stdout.write實現打印刷新
for j in range(2,1001):
    k=[]
    n=-1
    s=j
    for i in range(1,j):
        if j%i ==0:
            n+=1
            s-=i
            k.append(i)
        if s==0:
            print(j)
            for i in range(n):
                stdout.write(str(k[i]))
                stdout.write(' ')
            print(k[n])
  • 20、一球從100米高度自由落下,每次落地後反跳回原高度的一半再落下。求它在第10次落地時,共經過多少米?第10次反彈多高?
'''題目:一球從100米高度自由落下,每次落地後反跳回原高度的一半再落下,
求它在第10次落地時,共經過多少米?第10次反彈多高?
個人:善用初始化列表 + 列表.append()'''
hei=100
tim=10
height=[]#每次反彈高度
for i in range(2,tim+1):#計算第二次落地到第十次落地
    hei /= 2
    height.append(hei)
print('第10次落地時,反彈%s高'%(min(height)/2))# 第十次反彈爲第十次落地距離的一半
print('第10次落地時,經過%s米'%(sum(height)*2+100))# 總和加上第一次的 100
  • 21、猴子喫桃問題(逆向思維)
'''
題目:猴子喫桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個
第二天早上又將剩下的桃子喫掉一半,又多吃了一個。
以後每天早上都吃了前一天剩下的一半零一個。
到第10天早上想再喫時,見只剩下一個桃子了。求第一天共摘了多少。
程序分析:採取逆向思維的方法,從後往前推斷。
個人:這數學題我都不會,更別說還要編程實現了=,=
'''
x2=1
for day in range(9,0,-1):
    x1=(x2+1)*2
    x2=x1
print(x1)
  • 22、找出三隊賽手的名單
'''
題目:兩個乒乓球隊進行比賽,各出三人。甲隊爲a,b,c三人,乙隊爲x,y,z三人。已抽籤決定比賽名單。有人向隊員打聽比賽的名單。
a說他不和x比,c說他不和x,z比,請編程序找出三隊賽手的名單。
個人:·for循環,遍歷字符串列表;·if依次判斷
'''
for a in ['x','y','z']:
    for b in ['x','y','z']:
        for c in ['x','y','z']:
            if (a!=b) and (b!=c) and (c!=a) and (a!='x') and (c!='x') and (c!='z'):
                print('a和%s比賽,b和%s比賽,c和%s比賽'%(a,b,c))
#a和z比賽,b和x比賽,c和y比賽
  • 23、打印出如下圖案(菱形)
'''題目:打印出如下圖案(菱形):

   *
  ***
 *****
*******
 *****
  ***
   *
程序分析:先把圖形分成兩部分來看待,前四行一個規律,後三行一個規律,
利用雙重for循環,第一層控制行,第二層控制列。'''
for i in range(1,8,2):
    k=(7-i)//2
    print(' '*k,'*'*i)
for p in range(7-2,0,-2):
    o=(7-p)//2
    print(' '*o,'*'*p)
  • 24、求出這個數列的前20項之和
'''題目:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。
程序分析:請抓住分子與分母的變化規律。
個人:關鍵是找出數學關係'''
#方法一
a=2.0
b=1.0
s=0
for n in range(1,21):
    s+=a/b
    t=a
    a=a+b
    b=t
print(s)
#法二
a=2
b=1
s=0
for n in range(1,21):
    s+=a/b
    b,a=a,a+b
print(s)
  • 25、求 1+2!+3!+...+20! 的和
'''題目:求1+2!+3!+...+20!的和。
程序分析:此程序只是把累加變成了累乘。
#用好*=和+='''
#法一
n=0
s=0
t=1
for n in range(1,21):
    t*=n
    s+=t
print('結果爲:',s)

#法二
s=0
l=range(1,21)
def op(x):
    r=1
    for i in range(1,x+1):
        r*=i
    return r
s=sum(map(op,l))#map():根據提供的函數對指定序列做映射。
print('結果爲:',s)
  • 26、利用遞歸方法求5!   階乘(factorial)
'''題目:利用遞歸方法求5!。
程序分析:遞歸公式:fn=fn_1*4!'''
def  factorial (j):
    sum=0
    if j==0:
        sum=1
    else:
        sum=j*factorial(j-1)
    return sum
print(factorial(5))
  • 27、利用遞歸函數調用方式,將所輸入的5個字符,以相反順序打印出來
'''題目:利用遞歸函數調用方式,將所輸入的5個字符,以相反順序打印出來。'''
def output(s,l):
    if l==0:
        return
    print(s[l-1])
    output(s,l-1)
    
s=input('輸入字符串:')
l=len(s)
output(s,l)

#非遞歸,使用各列表的 reverse() 方法
s=input('輸入字符串:')
l=list(s)
l.reverse()
for i in range(len(l)):
    print(l[i])
  • 28、遞歸求第五個人的年齡
'''題目:有5個人坐在一起,問第五個人多少歲,他說比第4個人大兩歲。
問第4個人,他說比第3個人大兩歲。問第三個人,又說比第2人大兩歲。
問第2個人,說比第一個人大兩歲。
最後問第一個人,他說是10歲。請問第五個人多大?
程序分析:利用遞歸的方法,遞歸分爲回推和遞推兩個階段。
要想知道第五個人歲數,需知道第四人的歲數,
依次類推,推到第一人(10歲),再往回推。'''
def fn(n):
    if n ==1:
        return 10
    return 2+fn(n-1)
print(fn(5))
  • 29、學會分解出每一位數
'''題目:給一個不多於5位的正整數,要求:一、求它是幾位數,二、逆序打印出各位數字。
程序分析:學會分解出每一位數。'''
num=str(input('輸入大於10的數字:'))
for i in range(len(num)-1,-1,-1):
    print(num[i],end='')
  • 30、一個5位數,判斷它是不是迴文數
'''題目:一個5位數,判斷它是不是迴文數。
如12321是迴文數,個位與萬位相同,十位與千位相同。
個人:使用切片b=a[::-1],逆序輸出'''
a=input('輸入一串數字:')
b=a[::-1]
if a==b:
    print('%s 是迴文'%a)
else:
    print('%s 不是迴文'%a)
  • 31、由字母判斷是周幾,若一個字母判斷不出則還需輸入第二個字母(後倆方法很妙)
'''題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續判斷第二個字母。

方法一(原方法)
程序分析:用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if語句判斷第二個字母。即依次分情況判斷,若首字母是M,則直接得知是Monday;若首字母是S,則還需提示輸入第二個字母,以分辨是Saturday/Sunday。'''

letter=input('first letter: ')
#while letter !='Y'
if letter =='S':
    print('please input second letter: ')
    letter=input('second letter: ')
    if letter =='a':
        print('Saturday')
    elif letter =='u':
        print('Sunday')
    else:
        print('data error')

elif letter=='F':
    print('F')

elif letter=='T':
    print('please input second letter: ')
    letter=input('second letter: ')
    if letter =='h':
        print('Thursday')
    elif letter =='u':
        print('Tuesday')
    else:
        print('data error')

elif letter=='W':
    print('Wednesday')

elif letter=='M':
    print('Monday')

else:
    print('data error')

 

#方法二:巧妙運用字典
weeklist={'M':'Monday','T':{'u':'Tuesday','h':'Thursday'},
          'W':'Wednesday','F':'Friday','S':{'a':'Saturday','u':'Sunday'}}
#個人:構造weeklist字典,鍵是星期首字母,值是第二個字母(的指代)
letter1=input('輸入首字母:')
letter1=letter1.upper()

if (letter1 in ['T','S']):
    letter2=input('輸入第二個字母:')
    print(weeklist[letter1][letter2])
else:
    print(weeklist[letter1])
#注意[]與()的使用

 

#方法三:使用遞歸函數實現,對字符相同的個數沒有限制
week=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
def find(s,week):
    a=input('please input a letter:\n') #輸入一個字母傳給變量a
    s=s+a #變量s
    result=[]
    for i in week:#遍歷列表week
        if i.startswith(s):#檢查字符串i是否是以s開頭
            result.append(i)#若是,則直接把i傳給resul

    #判斷是否重複
    if len(result)==1:#列表result的長度=1,直接輸出結果
        return result
    else:#列表result的長度≠1,此時可能輸入了S或T,各對應倆元素
        return find(s,result)
#調用函數
s=''
print(find(s,week))

 

32.按相反的順序輸出列表的值(簡單,列表切片)

#題目:按相反的順序輸出列表的值
a=['one','two','three']
for i in a[::-1]:
    print(i)
    
'''three
two
one
'''

33.按頓號分隔列表(較簡單)

#題目:按頓號分隔列表
l=[1,2,3,4,5]
l2='、'.join(str(n) for n in l)
print(l2)
#1、2、3、4、5

34.練習函數調用

#題目:練習函數調用
def hello_world():
    print('hello world')
def three_hellos():
    for i in range(3):
        hello_world()
three_hellos()

35.文本顏色設置(暫時用不上,注意定義了一個類OK)

#題目:文本顏色設置
class bcolors:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    OKGREEN = '\033[92m'
    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'
    BOLD = '\033[1m'
    UNDERLINE = '\033[4m'

print(bcolors.WARNING + "警告的顏色字體" + bcolors.ENDC)

36.輸出指定範圍內的素數(質數)(有意思)

#題目:輸出指定範圍內的素數(質數),
# 在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。
lower=int(input('min:'))
upper=int(input('max:'))

for num in range(lower,upper+1):
    if num >1 :#以num=8爲例
        for i in range(2,num):#遍歷2到7
            if (num%i)==0:#8對2~6依次取餘,若餘數爲0,即還有其他因數—非素數
                break #跳出for循環,判斷下一個數:9
        else:
            print(num)

37.對10個數進行排序(多種方法)

#題目:對10個數進行排序
#原方法(較麻煩):程序分析:可以利用選擇法,即從後9個比較過程中,
# 選擇一個最小的與第一個元素交換,下次類推,即用第二個元素與後8個進行比較,並進行交換。
N=10
print('請輸入10個數字:\n')
l=[]
for i in range(N):#依次提示用戶輸入,並接收這10個數字
    l.append(int(input('輸入一個數字:\n')))
    print()
for i in range(N):#打印輸入的10個數字
    print(l[i])
print()

#排列這10個數字
for i in range(N-1):#從後9個比較過程中
    min=i#選擇一個最小的與第一個元素交換
    for j in range(i+1,N):#用第二個元素與後8個進行比較,並進行交換
        if l[min]>l[j]:min=j
    l[i],l[min]=l[min],l[i]
print('排列之後:\n')
for i in range(N):
    print(l[i])

 

#方法二:sort()方法
print('請輸入十個數字:\n')
a=[]
for n in range(10):#依次提示用戶輸入,並接收這10個數字
    a.append(int(input('輸入一個數字:\n')))
a.sort()
print(a)

38.求3*3矩陣主對角線元素之和

#題目:求一個3*3矩陣主對角線元素之和
#程序分析:利用雙重for循環控制輸入二維數組,再將a[i][i]累加後輸出
a=[]
sum=0.0
#利用雙重for循環輸入3*3二維數組
for i in range(3):
    a.append([])
    for j in range(3):
        a[i].append(float(input('輸入數字:\n')))
#累加後輸出
for i in range(3):
    sum+=a[i][j]
print(sum)

 

39.有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中

#題目:有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中。

x=[1,3,5,6,88,99]
y=int(input("輸入數字: "))
x.append(y)#append()方法:在列表末尾添加新的對象
x.sort()#列表排序
print(x)

 

40.將一個數組逆序輸出

#題目:將一個數組逆序輸出
a = [9,6,5,4,1]
print(a[::-1])
#[1, 4, 5, 6, 9]

a = [9,6,5,4,1]
for i in a[::-1]:
    print(i)
    '''
1
4
5
6
9
'''

 

41.模仿靜態變量的用法

#題目:模仿靜態變量的用法。
def varfunc():
    var=0
    print('var = %d' % var)
    var += 1
    #但var不變,始終爲0
if __name__=='__main__':
    for i in range(3):
        varfunc()

# 類的屬性
# 作爲類的一個屬性吧
class Static:
    StaticVar=0
    #靜態變量StaticVar,結果真+1了
    def varfunc(self):#定義函數
        self.StaticVar+=1
        print(self.StaticVar)

print(Static.StaticVar)
a=Static()
for i in range(3):
    a.varfunc()

 

42.學習使用auto定義變量的用法(沒有auto關鍵字,使用變量作用域來舉例吧)

#題目:學習使用auto定義變量的用法
#auto是一個C/C++語言存儲類型,僅在語句塊內部使用,初始化可爲任何表達式,
#其特點是當執行流程進入該語句塊的時候初始化可爲任何表達式。

#程序分析:沒有auto關鍵字,使用變量作用域來舉例吧。
num=2
def autofunc():
    num=1
    print('internal block num = %d' % num)
    num +=1
for i in range(3):
    print('The num = %d' % num)
    num+=1
    autofunc()
'''
The num = 2
internal block num = 1
The num = 3
internal block num = 1
The num = 4
internal block num = 1
'''

43.模仿靜態變量(static)另一案例

https://blog.csdn.net/Jasonmes/article/details/80620275

#題目:模仿靜態變量(static)另一案例。
# 程序分析:演示一個python作用域使用方法
class Num:
    nNum=1
    def inc(self):
        self.nNum+=1
        print('nNum = %d'%self.nNum)

if __name__=='__main__':
    nNum=2
    inst=Num()
    for i in range(3):
        nNum+=1
        print('The num =%d'% nNum)
        inst.inc()

44.兩個 3 行 3 列的矩陣,實現其對應位置的數據相加,並返回一個新矩陣

#兩個 3 行 3 列的矩陣,實現其對應位置的數據相加,並返回一個新矩陣:
#程序分析:創建一個新的 3 行 3 列的矩陣,使用 for 迭代並取出 X 和 Y 矩陣中對應位置的值,
# 相加後放到新矩陣的對應位置中
X = [[12, 7, 3],
     [4, 5, 6],
     [7, 8, 9]]
Y = [[5, 8, 1],
     [6, 7, 3],
     [4, 5, 9]]
result = [[0,0,0],
         [0,0,0],
         [0,0,0]]

#迭代輸出行
for i in range(len(X)):
    #迭代輸出列
    for j in range(len(X[0])):
        result[i][j]=X[i][j] +Y[i][j]

for r in result:
    print(r)

45.統計 1 到 100 之和

#題目:統計 1 到 100 之和
tmp=0
for i in range(1,101):
    tmp+=i
print('sum=%d'%tmp)

print(sum(range(1,101)))#直接使用sum()函數求和

46.求輸入數字的平方,如果平方運算後小於 50 則退出

#題目:求輸入數字的平方,如果平方運算後小於 50 則退出。
TRUE=1
FALSE=0
#這裏的TRUE和FALSE只是輔助判斷的普通變量,用T和F也可

def square(x):#計算平方的函數
    return x*x
print('如果平方運算後小於 50 則退出')

again=1
while again:#while循環用於判斷
    num=int(input('輸入數字:'))
    print('結果爲:%d'%(square(num)))
    if square(num)>50:
        again=TRUE
    else:
        again=FALSE

 

while True:#當滿足條件時進入循環;當條件不滿足時,跳出循環
    x=int(input('輸入一個數字:'))
    x*=x
    print('結果爲:%d'% x)
   #print('結果爲:{}'.format(x)) 亦可
    if x >50:
        break

47.兩個變量值互換

#題目:兩個變量值互換
def exchange(a,b):
    a,b=b,a
    return (a,b)
#先定義好exchange()函數;而後在if __name__=='__main__':段裏調用
if __name__=='__main__':
    x=10
    y=20
    print('x=%d,y=%d'% (x,y))
    x,y=exchange(x,y)
    print('x=%d,y=%d' % (x, y))

48.數字比較

#題目:數字比較
#封裝一個數字比較函數,並輸入比較的數字
def compare(num1,num2):
    if num1>num2:
        print('%s大於%s'%(num1,num2)) #%s:格化式一個對象爲字符;%d:整數
    elif num2>num1:
        print('%s小於%s'%(num1,num2))
    else:
        print('%s等於%s' % (num1, num2))

if __name__=='__main__':
    number1=input('輸入第1個數字:')
    number2 = input('輸入第2個數字:')
    compare(number1,number2)

49.使用lambda來創建匿名函數

#題目:使用lambda來創建匿名函數
#求圓的面積
circlesquare=lambda r:3.1415926*r*r
print(circlesquare(3))
#求和函數
sumsum=lambda x,y:x+y
print(sumsum(3,7))

50.使用random模塊輸出一個隨機數

#題目:輸出一個隨機數。
#程序分析:使用 random 模塊。
import random
print(random.random()) #輸出0-1之間的隨機數
print(random.uniform(0,10)) #輸出10-20之間的隨機數
print(random.randint(0,10)) #輸出10-20之間的隨機整數

 

if __name__ == '__main__'的意思是:當.py文件被直接運行時,if __name__ == '__main__'之下的代碼塊將被運行;當.py文件以模塊形式被導入時,if __name__ == '__main__'之下的代碼塊不被運行。

https://blog.csdn.net/yjk13703623757/article/details/77918633

 

 

 

 

 

 

 

 

 

 

 

 


  • NumPy Ndarray 對象

NumPy 最重要的一個特點是其 N 維數組對象 ndarray,它是一系列同類型數據的集合,以 0 下標爲開始進行集合中元素的索引。ndarray 對象是用於存放同類型元素的多維數組。

import numpy as np
a=np.array([[1,2,3],[4,8,7]])#可多維
print(a)
'''
[[1 2 3]
 [4 8 7]]
'''
b=np.array([1,2,3,4,5],ndmin=3)#指定最小維度爲2
print(b)#[[[1 2 3 4 5]]]

 

  • NumPy 數據類型

numpy 支持的數據類型比 Python 內置的類型要多很多,基本上可以和 C 語言的數據類型對應上,其中部分類型對應爲 Python 內置的類型。數據類型對象 (dtype):用來描述與數組對應的內存區域如何使用。

import numpy as np
dt=np.dtype(np.int32)#int32#使用標量類型
dt_suoxie=np.dtype('i8')#int64 #int8, int16, int32, int64 四種數據類型可用字符串 'i1', 'i2','i4','i8' 代替

dt_shuzu=np.dtype([('age',np.int8)])#注意括號
a=np.array([(10,),(20,)],dtype=dt_shuzu)

student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')])
#定義一個結構化數據類型 student,包含字符串字段 name,整數字段 age,及浮點字段 marks,並將這個 dtype 應用到 ndarray 對象
#[('name', 'S20'), ('age', 'i1'), ('marks', '<f4')] 

 

  • NumPy  數組屬性

NumPy 數組的維數稱爲秩(rank),一維數組的秩爲 1,二維數組的秩爲 2,以此類推。

在 NumPy中,每一個線性的數組稱爲是一個軸(axis),也就是維度(dimensions)。比如說,二維數組相當於是兩個一維數組,其中第一個一維數組中每個元素又是一個一維數組。所以一維數組就是 NumPy 中的軸(axis),第一個軸相當於是底層數組,第二個軸是底層數組裏的數組。而軸的數量——秩,就是數組的維數。很多時候可以聲明 axis。axis=0,表示沿着第 0 軸進行操作,即對每一列進行操作;axis=1,表示沿着第1軸進行操作,即對每一行進行操作。

import numpy as np
#ndarray.ndim 返回數組的維數(秩)
a=np.arange(24)
print(a.ndim)#1  a現在只有一個維度
aa=a.reshape(2,4,3)
print(aa.ndim)#3 aa現在有三個維度

#ndarray.shape 返回一個元組表示數組的維度,這個元組的長度就是維度的數目,即 ndim 屬性(秩)。比如,一個二維數組,其維度表示"行數"和"列數"。也可以用於調整數組大小。
a3=np.array([[1,2,3],[4,5,6]])
print(a3.shape)#(2, 3) a3是兩行三列的數組
a3.shape=(3,2)#調整數組大小
print(a3)
#NumPy 也提供了 reshape 函數來調整數組大小
a3.reshape(3,2)
b3=a3.reshape(3,2)
  • NumPy 創建數組

ndarray 數組除了可以使用底層 ndarray 構造器來創建外,也可以通過以下幾種方式來創建。

import numpy as np
#numpy.empty 方法用來創建一個指定形狀(shape)、數據類型(dtype)且未初始化的數組:
# 數組元素爲隨機值,因爲它們未初始化
x=np.empty([3,2],dtype=int)
print(x)
'''[[ 741487409 1953068064]
 [ 658335084 1819239280]
 [1701671535  540698739]]'''

#numpy.zeros創建指定大小的數組,數組元素以 0 來填充
x2=np.zeros((2,3),dtype=int)
print(x2)
#numpy.ones創建指定形狀的數組,數組元素以 1 來填充
#np.arange 創建數組
#np.eye創建對角矩陣數組

# 創建標準正態分佈數組
from numpy import *
z=random.randn(2,3)##服從 X~N(0,1) 的正態分佈隨機數組,並非範圍(0,1)哦
print(z)
'''[[-0.98858385 -0.63839011 -0.85839911]
 [ 0.00528638  0.51630417  0.33342972]]'''
  • NumPy 從已有的數組創建數組

import numpy as np
#numpy.asarray 類似 numpy.array
#將列表轉換爲 ndarray
l=[1,2,3]
ln=np.asarray(l)#np.array亦可
print(l)#[1, 2, 3]
print(type(l))#<class 'list'>
#將元組列表轉換爲 ndarray
tl=[(1,2,3),(7,8,9)]
print(tl)#[(1, 2, 3), (7, 8, 9)]
tln=np.asarray(tl)
print(tln)
'''
[[1 2 3]
 [7 8 9]]
 '''
  • NumPy 從數值範圍創建數組

import numpy as np
#numpy 包中的使用 arange 函數創建數值範圍並返回 ndarray 對象
#numpy.arange(start, stop, step, dtype)
x=np.arange(5)
x2=np.arange(10,20,3)
print(x)#[0 1 2 3 4]
print(x2)#[10 13 16 19]
  • NumPy 切片和索引

import numpy as np
#通過內置的 slice 函數 或 冒號分隔切片 start:stop:step
a=np.arange(10)
s=slice(2,7,2)
s2=a[2:7:2]
print(a[s])
print(s2) #[2 4 6]

print (a[a>5]) #布爾索引-取出>5的元素
  • NumPy 廣播(Broadcast)

廣播(Broadcast)是 numpy 對不同形狀(shape)的數組進行數值計算的方式。

對數組的算術運算通常在相應的元素上進行,如果兩個數組 a 和 b 形狀相同,即滿足 a.shape == b.shape,那麼 a*b 的結果就是 a 與 b 數組對應位相乘。這要求維數相同,且各維度的長度相同。當運算中的 2 個數組的形狀不同時,numpy 將自動觸發廣播機制。

import numpy as np
#通過內置的 slice 函數 或 冒號分隔切片 start:stop:step
a=np.array([[0,0,0],[10,10,10],[20,20,20],[30,30,30]])
b=np.array([1,2,3])
print(a+b)
'''
[[ 1  2  3]
 [11 12 13]
 [21 22 23]
 [31 32 33]]
 '''
  • NumPy 迭代數組

NumPy 迭代器對象 numpy.nditer 提供了一種 靈活訪問一個或者多個數組元素的方式。

迭代器最基本的任務的可以完成對數組元素的訪問

接下來我們使用 arange() 函數創建一個 2X3 數組,並使用 nditer 對它進行迭代。

import numpy as np
a=np.arange(6).reshape(2,3)
print(a)
'''
[[0 1 2]
 [3 4 5]]
 '''
print('a的轉置:\n',a.T)
'''
[[0 3]
 [1 4]
 [2 5]]
 '''
for x in np.nditer(a):
    print(x,end=',')
print('\n')
  • Numpy 數組操作

修改數組形狀

import numpy as np
#修改數組形狀
#numpy.reshape 函數可以在不改變數據的條件下修改形狀
a=np.arange(8)
aa=a.reshape(2,4) #注意是a.reshape而非np.

#numpy.ndarray.flat 是一個數組元素迭代器
b=np.arange(9).reshape(3,3)
print(b)
for row in b:#循環輸出每行
    print(row)
#對數組中每個元素都進行處理,可以使用flat屬性,該屬性是一個數組元素迭代器:、
for element in b.flat:#循環輸出每個元素
    print(element)

#numpy.ndarray.flatten 返回一份展平數組拷貝,對拷貝所做的修改不會影響原始數組
c=np.arange(8).reshape(2,4)
print(c.flatten())#[0 1 2 3 4 5 6 7]

#numpy.ravel() 展平的數組元素,順序通常是"C風格",返回的是數組視圖,修改會影響原始數組。
print(c.ravel())

翻轉數組

import numpy as np
#翻轉數組
#numpy.transpose 函數用於對換數組的維度(類似轉置numpy.ndarray.T)
a=np.arange(12).reshape(3,4)
print(a)
print(np.transpose(a))
print(a.T)

#numpy.rollaxis 函數向後滾動特定的軸到一個特定位置
b=np.arange(8).reshape(2,2,2)
print(b)
print(np.rollaxis(b,2))# 將軸 2 滾動到軸 0(寬度到深度)
print(np.rollaxis(b,2,1))#將軸 0 滾動到軸 1(寬度到高度)

#numpy.swapaxes 函數用於交換數組的兩個軸
print(np.swapaxes(b,2,0))

修改數組維度

連接數組

分割數組

數組元素的添加與刪除

import numpy as np
#numpy.resize 函數返回指定大小的新數組。如果新數組大小大於原始大小,則包含原始數組中的元素的副本。。
a=np.array([[1,2,3],[4,5,6]])
print(a)
aa=np.resize(a,(3,2))
print(aa)
'''
[[1 2]
 [3 4]
 [5 6]]
'''
aaa=np.resize(a,(3,3))
print(aaa)
'''
[[1 2 3]
 [4 5 6]
 [1 2 3]]
 '''
#numpy.append 函數在數組的末尾添加值。 追加操作會分配整個數組,並把原來的數組複製到新數組中。 此外,輸入數組的維度必須匹配否則將生成ValueError。
#append 函數返回的始終是一個一維數組。
#arr:輸入數組;values:要向arr添加的值,需要和arr形狀相同(除了要添加的軸);
#axis:默認爲 None。當axis無定義時,是橫向加成,返回總是爲一維數組
print(np.append(a,[7,8,9]))#[1 2 3 4 5 6 7 8 9]

#numpy.insert 函數在給定索引之前,沿給定軸在輸入數組中插入值

#numpy.delete 函數返回從輸入數組中刪除指定子數組的新數組。 與 insert() 函數的情況一樣,如果未提供軸參數,則輸入數組將展開。

#numpy.unique 函數用於去除數組中的重複元素

 

NumPy 字符串函數

以下函數用於對 dtype 爲 numpy.string_ 或 numpy.unicode_ 的數組執行向量化字符串操作。 它們基於 Python 內置庫中的標準字符串函數。這些函數在字符數組類(numpy.char)中定義。

#NumPy 字符串函數 在字符數組類(numpy.char)中定義。
import numpy as np
#連接、複製
print(np.char.add(['hello'],['ywp']))
print(np.char.add(['hello','ywp'],[' hi',' wtx']))
print(np.char.multiply('cool ',3))#注意空格——輸出美觀

## np.char.center(str , width,fillchar) :
# str: 字符串,width: 長度,fillchar: 填充字符
print(np.char.center('ywp',20,fillchar='*'))

#大小寫轉換
print(np.char.capitalize('ywp'))
print(np.char.title('i love you'))
print(np.char.lower(['GOOD','BAD']))#['good' 'bad']
print(np.char.upper('running'))

#分隔、移除字符——split() strip() join()
print(np.char.split('i love you and you love me'))#split()默認空格分隔,返回數組
print(np.char.split('www.running.com',sep='.'))#指定分隔符 ['www', 'running', 'com']
print(np.char.splitlines('i\nam a bad guy '))#numpy.char.splitlines() 函數以換行符作爲分隔符來分割字符串,並返回數組。
#\n,\r,\r\n 都可用作換行符
print(np.char.strip('oogood and bado','o'))#good and bad
print(np.char.strip(['oogood and bado'],'o'))#['good and bad']
#numpy.char.join() 函數通過指定分隔符來連接數組中的元素或字符串
print(np.char.join(" ",'good bad')) #g o o d   b a d
print(np.char.join([':','-'],['good','google']))
print(np.char.replace('wtx love ywp','wtx','ywp'))#ywp love ywp

#編碼與解碼
a=np.char.encode('good','UTF-8')
print(a)#b'good'
print(np.char.decode(a,'UTF-8'))#bad
#標準寫法:UTF-8

 

NumPy 數學函數

三角函數,算術運算的函數,複數處理函數等。

import numpy as np
#三角函數、反三角函數
a=np.array([0,30,90])
sin=np.sin(a*np.pi/180)
print(np.sin(a*np.pi/180))#通過乘 pi/180 轉化爲弧度
print(np.cos(a*np.pi/180))
print(np.tan(a*np.pi/180))
inv=np.arcsin(sin)
print(inv)

a=np.array([1.0,2.34])
print(np.around(a,decimals=1))#[1 2]
print(np.floor(a))#向下取整(不超過) [1. 2.]
print(np.ceil(a))#向上取整(不小於) [1. 3]

NumPy 算術函數

NumPy 算術函數包含簡單的加減乘除: add()subtract()multiply() 和 divide()

需要注意的是數組必須具有相同的形狀或符合數組廣播規則。

import numpy as np
a=np.arange(9,dtype=np.float_).reshape(3,3)
print(a)
'''[[0. 1. 2.]
 [3. 4. 5.]
 [6. 7. 8.]]'''
b=np.array([10,10,10])
print(b)#[10 10 10]
#倆數組的加減乘除
print(np.add(a,b))
print(np.subtract(a,b))
print(np.multiply(a,b))
print(np.divide(a,b))
print(np.reciprocal(a))

NumPy 統計函數

NumPy 提供了很多統計函數,用於從數組中查找最小元素,最大元素,百分位標準差和方差等。

函數說明如下:numpy.amin() 和 numpy.amax()

numpy.amin() 用於計算數組中的元素沿指定軸的最小值。

numpy.amax() 用於計算數組中的元素沿指定軸的最大值。

NumPy 排序、條件刷選函數

import numpy as np
a=np.array([[3,1],[9,11]])#注意括號
print(a)
'''[[ 3  1]
 [ 9 11]]'''
print(np.sort(a)) #即np.sort(a,axis=1)按行排序
'''[[ 1  3]
 [ 9 11]]'''
print(np.sort(a,axis=0))#按列排序
'''[[ 3  1]
 [ 9 11]]'''
#axis: 沿着它排序數組的軸。 axis=0 按列排序,axis=1 按行排序

 

NumPy 矩陣庫(Matrix)

NumPy 中包含了一個矩陣庫 numpy.matlib,該模塊中的函數返回的是一個矩陣,而不是 ndarray 對象。

import numpy.matlib
import numpy as np
#矩陣總是二維的,而 ndarray 是一個 n 維數組。 兩個對象都是可互換的。
print(np.matlib.empty((2,2)))#注意括號
print(np.matlib.zeros((2,2)))
print(np.matlib.ones((2,2)))
print(np.matlib.eye(n=3,M=4,k=0))
print(np.matlib.identity(5,dtype=int))
print(np.matlib.rand(2,1))

NumPy 線性代數

 

NumPy IO讀寫

numpy.save()

#numpy.save() 函數將數組保存到以 .npy 爲擴展名的文件中
import numpy as np
a=np.array([[1,2],[3,4]])
np.save('outfile.npy',a)#擴展名.npy會自動加上   同np.save('outfile2',a)
#用 load()函數 讀取數據
b=np.load('outfile.npy')
print(b)
'''[[1 2]
 [3 4]]'''

numpy.savez()

#numpy.savez() 函數將多個數組保存到以 npz 爲擴展名的文件中
import numpy as np
a=np.array([[1,2],[3,4]])
b=np.arange(0,1,0.1)#均勻地(evenly)等分區間 >>>[0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
c=np.sin(b)
np.savez('out.npz',a,b,sin_array=c)#c 使用了關鍵字參數 sin_array

r=np.load('out.npz')
print(r.files)#查看各個數組名稱>>> ['sin_array', 'arr_0', 'arr_1']
print(r['arr_0'])
print(r['arr_1'])
print(r['sin_array'])

savetxt()與loadtxt()

#savetxt() 函數是以簡單的文本文件格式存儲數據,對應的使用 loadtxt() 函數來獲取數據。
import numpy as np
a=np.array([1,2,3,4,5])
np.savetxt('out.txt',a)
b=np.loadtxt('out.txt')
print(b)
#savetxt() 函數是以簡單的文本文件格式存儲數據,對應的使用 loadtxt() 函數來獲取數據。
import numpy as np
a=np.arange(0,10,0.5).reshape(4,-1)
np.savetxt('out.txt',a,fmt='%d',delimiter=',')#改爲保存爲整數,以逗號分隔
b=np.loadtxt('out.txt',delimiter=',')# load 時也要指定爲逗號分隔
print(b)

 

NumPy Matplotlib

Matplotlib 是 Python 的繪圖庫。 它可與 NumPy 一起使用,提供了一種有效的 MatLab 開源替代方案。 它也可以和圖形工具包一起使用,如 PyQt 和 wxPython。此庫:重要但沒怎麼看。

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章