python進(jìn)行數學(xué)計算,有其獨特的地方。本文,介紹一下Python的數學(xué)運算和數學(xué)函數方面的基礎知識。以下是小編為你整理的python如何學(xué)好 ?
先進(jìn)行幾個(gè)運算: ?
5/2*3+9 ?
8*9-5/6 ?
這兩個(gè)算式,可以直接粘貼到python代碼編譯器里面,但是運行之后,沒(méi)有輸出結果。 ?
其實(shí),python已經(jīng)運算了這個(gè)式子了,只不過(guò)沒(méi)顯示結果。
用print可以顯示運算結果。 ?
print(5/2*3+9)print(8*9-5/6) ?
如果我們想要看到一個(gè)完整的算式,需要把算式以字符串的形式返回。 ?
print("5/2*3+9"+str(5/2*3+9))print("8*9-5/6"+str(8*9-5/6)) ?
注意: ?
"5/2*3+9"就是一個(gè)字符串的形式,在英文輸入法的雙引號里面; ?
str(5/2*3+9)是對算式進(jìn)行計算,并把計算結果轉化為字符串; ?
+的作用是連接字符串。 ?
基本運算 ?
加減乘除的運算,和平常的一樣: ?
print("5+6="+str(5+6))print("5/6="+str(5/6))print("5*6="+str(5*6))print("5-6="+str(5-6)) ?
乘方運算2^100,在python里面,寫(xiě)為2**100: ?
print("2^100 = " + str(2**100))print("5^10 = " + str(5**10)) ?
求余數,用%實(shí)現: ?
print("100除以5的余數是" + str(*5))print("100除以90的余數是" + str(*90)) ?
注釋的運用# 注釋?zhuān)翰粎⑴c程序運行,作用是給給看代碼的人一些提示。 ?
# 我是一個(gè)大帥哥,這行是一行注釋?zhuān)?號后面的表示注釋 ?
""" ?
多行注釋 ?
多行注釋 ?
多行注釋 ?
""" ?
# 一般情況下注釋都直接使用#號的形式 ?
# 在正常開(kāi)發(fā)中,三個(gè)引號對的注釋形式一般是作為對整個(gè)文件的說(shuō)明出現在文# 件的頂部 ?
# 針對某一行代碼的注釋?zhuān)梢苑旁诖a語(yǔ)句的上面,也可以放在代碼的后面 ?
print(1801) # 系統提供的展示(打印,輸出)功能 ?
print(666) # ?
print() #默認以換行結尾 ?
print(100-6) # 可以直接進(jìn)行數學(xué)運算,打印結果就是運算結果 ?
print(10086, 10+6) # 可以同時(shí)打印多個(gè)內容,多個(gè)內容之間用逗號隔開(kāi) ?
print(1801, 3+6, 4+7) # 打印結果里,多個(gè)內容之間會(huì )默認有一個(gè)空格 ?
# 單引號對和雙引號對是等價(jià)的 ?
print('**************分割符******************') ?
print('good.123我愛(ài)*') # 引號引起來(lái)的叫字符串,單個(gè)字符也是字符串 ?
print('love',end=' ') # end=''設置打印結尾的內容,默認是換行(n) ?
print('****') ?
print('good morning', 666, '早上好', 4+6) # 字符串和數字可以混合打印 ?
print('3+6') # '3+6'這是一個(gè)字符串,包含3個(gè)字符:3+6 不是數學(xué)運算 ?
# 有些特殊的字符需要使用轉義字符(),轉義字符本身也是特殊字符print('我n的'身高'是"18\0')print(r'我n的'身高'是"18\0') # 如果字符串以r開(kāi)頭,那么這個(gè)字符串中所# 有的轉義字符全部失效。print('good' * 3) # 字符串可以和數字相乘,得到重復的字符串print('*'*10, '分割符', '*'*10)print('good' + 'morning', 666) # 字符串可以和字符串相加,得到一個(gè)拼接的字符串print('*'*20 + '分割符' + '*'*20) ?
請勿將代碼復制直接使用,可能出現中英文格式錯誤,請讀者手打練習。 ?
導入numpy模塊 在python IDE導入numpy模塊,我用的是自帶解釋器
?
>>> import numpy as np ?
>>> np.array([1,2,3,4]) #通過(guò)array函數創(chuàng )建數組 ?
array([1, 2, 3, 4]) ?
>>> c=np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]])#二維數組,第0軸長(cháng)度為3,第1軸長(cháng)度為4,也就分別相當于矩陣的行數和列數 ?
>>> c ?
array([[ 1, 2, 3, 4], ?
[ 4, 5, 6, 7], ?
[ 7, 8, 9, 10]]) ?
>>> c.shape#數組的形狀可以通過(guò)其shape 屬性獲得,它是一個(gè)描述數組各個(gè)軸長(cháng)度的元組(tuple) ?
(3L, 4L)
?
3 ?
>>> np.arange(0,1,0.1)#arange()函數指定了開(kāi)始值、終值和步長(cháng)創(chuàng )建等差數列的一維數組,注意不包含終值。 ?
array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]) ?
4 ?
>>> np.linspace(0,1,10)#指定開(kāi)始值、終值和元素個(gè)數創(chuàng )建等差數列的一維數組,通過(guò)endpoint參數指定是否包含終值,默認為T(mén)ure,即包含終值 ?
array([ 0. , 0.11111111, 0.22222222, 0.33333333, 0.44444444, ?
0.55555556, 0.66666667, 0.77777778, 0.88888889, 1. ]) ?
5 ?
>>> np.logspace(0,2,5)#logspace和linspace類(lèi)似,區別在于它創(chuàng )建的是等比數列,起始值為10^0,而終值為10^2 ?
array([ 1. , 3.16227766, 10. , 31.6227766 , 100. ]) ?
類(lèi)的繼承
如果已經(jīng)定義了Person類(lèi),需要定義新的Student和Teacher類(lèi)時(shí),可以直接從Person類(lèi)繼承:
class Person(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
定義Student類(lèi)時(shí),只需要把額外的屬性加上,例如score:
class Student(Person):
def __init__(self, name, gender, score):
super(Student, self).__init__(name, gender)
self.score = score
一定要用 super(Student, self).__init__(name, gender) 去初始化父類(lèi),否則,繼承自 Person 的 Student 將沒(méi)有 name 和 gender。
函數super(Student, self)將返回當前類(lèi)繼承的父類(lèi),即 Person ,然后調用__init__()方法,注意self參數已在super()中傳入,在__init__()中將隱式傳遞,不需要寫(xiě)出(也不能寫(xiě))。
python中判斷類(lèi)型:
函數isinstance()可以判斷一個(gè)變量的類(lèi)型,既可以用在Python內置的數據類(lèi)型如str、list、dict,也可以用在我們自定義的類(lèi),它們本質(zhì)上都是數據類(lèi)型。
在繼承鏈上,一個(gè)父類(lèi)的實(shí)例不能是子類(lèi)類(lèi)型,因為子類(lèi)比父類(lèi)多了一些屬性和方法。一個(gè)實(shí)例可以看成它本身的類(lèi)型,也可以看成它父類(lèi)的類(lèi)型。
class Person(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
class Student(Person):
def __init__(self, name, gender, score):
super(Student, self).__init__(name, gender)
self.score = score
t = Teacher('Alice', 'Female')
print isinstance(t,Person)
print isinstance(t,Student)
print isinstance(t,Teacher)
print isinstance(t,object)